U.S. patent application number 13/784294 was filed with the patent office on 2013-12-05 for systems and methods for dynamically loading web fonts and dynamic availability for fonts based on language settings.
This patent application is currently assigned to Google Inc.. The applicant listed for this patent is GOOGLE INC.. Invention is credited to Jeff Scott Harris, Isabella Ip, Luiz Amaral Franca Pereira Filho, Clayton Williams.
Application Number | 20130325795 13/784294 |
Document ID | / |
Family ID | 49671543 |
Filed Date | 2013-12-05 |
United States Patent
Application |
20130325795 |
Kind Code |
A1 |
Harris; Jeff Scott ; et
al. |
December 5, 2013 |
Systems and Methods for Dynamically Loading Web Fonts and Dynamic
Availability for Fonts Based on Language Settings
Abstract
In a collaborative online document environment, a first user
device is provided access to a document, via a network. A second
user device is provided access to the document via the network. A
list of fonts available to the second user device is received. The
list is transmitted to the first user device. A request is received
from the first user device to provide at least one of the fonts
identified in the list. The at least one font is provided to the
first user device.
Inventors: |
Harris; Jeff Scott; (New
York, NY) ; Pereira Filho; Luiz Amaral Franca;
(Jersey City, NJ) ; Ip; Isabella; (New York,
NY) ; Williams; Clayton; (New York, NY) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
GOOGLE INC. |
Mountain View |
CA |
US |
|
|
Assignee: |
Google Inc.
Mountain View
CA
|
Family ID: |
49671543 |
Appl. No.: |
13/784294 |
Filed: |
March 4, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61653671 |
May 31, 2012 |
|
|
|
Current U.S.
Class: |
707/608 |
Current CPC
Class: |
G06F 16/957 20190101;
H04L 65/403 20130101; G06F 16/9577 20190101; G06F 40/129 20200101;
G06F 16/9537 20190101; G06F 40/109 20200101 |
Class at
Publication: |
707/608 |
International
Class: |
H04L 29/06 20060101
H04L029/06 |
Claims
1. A method comprising: providing to a first user device access to
document in a collaborative online document environment via a
network; providing to a second user device access to the document
via the network; receiving a list of fonts available to the second
user device; transmitting the list to the first user device;
receiving a request from the first user device to provide at least
one of the fonts identified in the list; and providing the at least
one font to the first user device.
2. The method of claim 1, further comprising: prior to the step of
providing the least one font to the first user device, determining
that the at least one of the fonts identified in the list is
unavailable to the first user device.
3. The method of claim 1, wherein the step of providing to the
second user device access to the document is in response to
receiving an indication from the first user device granting
permission to allow the second user device to at least one of
viewing the document and editing the document.
4. The method of claim 1, further comprising: receiving a list of
fonts available to the first user device.
5. The method of claim 4, wherein the step of receiving the list of
fonts available to the first user device is in response to the
first user device logging in, and the step of receiving the list of
fonts available to the first user device is in response to the
second user logging in.
6. The method of claim 4, further comprising: receiving an updated
list of fonts available to the first user device, wherein the
updated list includes a name of the at least one font.
7. The method of claim 1, further comprising: receiving commands
simultaneously from the first user device and the second user
device to edit the document.
8. An apparatus comprising: a processor; and a memory
communicatively coupled to the processor, the memory to store
computer program instructions, the computer program instructions
when executed on the processor cause the processor to perform
operations comprising: providing to a first user device access to
document in a collaborative online document environment via a
network; providing to a second user device access to the document
via the network; receiving a list of fonts available to the second
user device; transmitting the list to the first user device;
receiving a request from the first user device to provide at least
one of the fonts identified in the list; and providing the at least
one font to the first user device.
9. The apparatus of claim 8, wherein the memory further comprises
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
prior to the step of providing the least one font to the first user
device, determining that the at least one of the fonts identified
in the list is unavailable to the first user device.
10. The apparatus of claim 8, wherein providing to the second user
device access to the document is in response to receiving an
indication from the first user device granting permission to allow
the second user device to at least one of viewing the document and
editing the document.
11. The apparatus of claim 8, wherein the memory further comprises
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
receiving a list of fonts available to the first user device.
12. The apparatus of claim 11, wherein receiving the list of fonts
available to the first user device is in response to the first user
device logging in, and receiving the list of fonts available to the
first user device is in response to the second user logging in.
13. The apparatus of claim 11, wherein the memory further comprises
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
receiving an updated list of fonts available to the first user
device, wherein the updated list includes a name of the at least
one font.
14. The apparatus of claim 8, wherein the memory further comprises
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
receiving commands simultaneously from the first user device and
the second user device to edit the document.
15. A computer readable medium storing computer program
instructions, which, when executed on a processor, cause the
processor to perform operations comprising: providing to a first
user device access to document in a collaborative online document
environment via a network; providing to a second user device access
to the document via the network; receiving a list of fonts
available to the second user device; transmitting the list to the
first user device; receiving a request from the first user device
to provide at least one of the fonts identified in the list; and
providing the at least one font to the first user device.
16. The computer readable medium of claim 15, further comprising
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
prior to the step of providing the least one font to the first user
device, determining that the at least one of the fonts identified
in the list is unavailable to the first user device.
17. The computer readable medium of claim 15, wherein providing to
the second user device access to the document is in response to
receiving an indication from the first user device granting
permission to allow the second user device to at least one of
viewing the document and editing the document.
18. The computer readable medium of claim 15, further comprising
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
receiving a list of fonts available to the first user device.
19. The computer readable medium of claim 18, wherein receiving the
list of fonts available to the first user device is in response to
the first user device logging in, and the operations for receiving
the list of fonts available to the first user device is in response
to the second user logging in.
20. The computer readable medium of claim 18, further comprising
computer program instructions, which, when executed on the
processor cause the processor to perform operations comprising:
receiving an updated list of fonts available to the first user
device, wherein the updated list includes a name of the at least
one font.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims benefit, pursuant to 35 U.S.C.
.sctn.119(e), of U.S. Provisional Application Ser. No. 61/653,671
filed May 31, 2012, which is hereby incorporated herein by
reference in its entirety.
TECHNICAL FIELD
[0002] This application relates generally to systems, methods and
apparatus for dynamically loading web fonts, and more particularly
to systems, methods and apparatus for dynamically loading web fonts
for users in a collaborative online document environment.
BACKGROUND
[0003] Web fonts provide users with the ability to view online
content on webpages. The content may be rendered using various web
fonts that provide users with rich and robust text in order to view
the content exactly as it was meant to be viewed using the web
fonts selected by the webpage developer. Web fonts are also used to
render text in different languages so that users may properly view
the text.
[0004] When users view a webpage, the text on the webpage is
rendered using the fonts available on the users' devices. If the
font that is needed to render the text on the webpage is available
to a user's device (e.g., the font is stored locally), the user may
view the text as it was intended to be viewed, as determined by the
webpage developer. If however, the font is not available to the
user's device, the user's device may not be able to provide any
readable text to the user. Alternatively, the user's device may use
a default font to render the text.
[0005] Furthermore, if a first user, located in a first location,
wishes to send to a second user, located in a second location, a
document containing text in a first language, the second user may
not be able to view the second document properly if the second user
does not have fonts associated with the first language installed
locally.
SUMMARY
[0006] In accordance with an embodiment, a first user device is
provided access to a document, via a network. A second user device
is provided access to the document via the network. A list of fonts
available to the second user device is received. The list is
transmitted to the first user device. A request is received from
the first user device to provide at least one of the fonts
identified in the list. The at least one font is provided to the
first user device.
[0007] In an embodiment, prior to the step of providing the least
one font to the first user device, it is determined that the at
least one of the fonts identified in the list is unavailable to the
first user device.
[0008] In an embodiment, wherein the step of providing to the
second user device access to the document is in response to
receiving an indication from the first user device granting
permission to allow the second user device to at least one of
viewing the document and editing the document.
[0009] In an embodiment, a list of fonts available to the first
user device is received. In an embodiment, the step of receiving
the list of fonts available to the first user device is in response
to the first user device logging in, and the step of receiving the
list of fonts available to the first user device is in response to
the second user logging in. In an embodiment, an updated list of
fonts available to the first user device is received, wherein the
updated list includes a name of the at least one font.
[0010] In an embodiment, commands are received simultaneously from
the first user device and the second user device to edit the
document.
[0011] In accordance with an embodiment, an apparatus includes a
processor and a memory communicatively coupled to the processor.
The memory stores computer program instructions. The computer
program instructions when executed on the processor cause the
processor to perform the following operations. A first user device
is provided access to a document, via a network. A second user
device is provided access to the document via the network. A list
of fonts available to the second user device is received. The list
is transmitted to the first user device. A request is received from
the first user device to provide at least one of the fonts
identified in the list. The at least one font is provided to the
first user device.
[0012] In accordance with an embodiment, a computer readable medium
stores computer program instructions, which, when executed on a
processor, cause the processor to perform the following operations.
A first user device is provided access to a document, via a
network. A second user device is provided access to the document
via the network. A list of fonts available to the second user
device is received. The list is transmitted to the first user
device. A request is received from the first user device to provide
at least one of the fonts identified in the list. The at least one
font is provided to the first user device.
[0013] These and other advantages of the present disclosure will be
apparent to those of ordinary skill in the art by reference to the
following Detailed Description and the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] FIG. 1 depicts a communication network that may be used to
provide document services, in accordance with an embodiment;
[0015] FIG. 2 depicts functional components of an exemplary user
device, in accordance with an embodiment;
[0016] FIG. 3 depicts functional components of a server, in
accordance with an embodiment;
[0017] FIG. 4 depicts of a view of a document, in accordance with
an embodiment;
[0018] FIG. 5 is a flowchart of a method for providing fonts to a
user based on location, in accordance with an embodiment;
[0019] FIG. 6 depicts a view of language settings, in accordance
with an embodiment;
[0020] FIG. 7 depicts an exemplary list of available languages, in
accordance with an embodiment;
[0021] FIG. 8 is a flowchart of a method of providing fonts to a
user device, in accordance with an embodiment;
[0022] FIG. 9 is a flowchart of a method of providing fonts to
collaborative users in a collaborative online development network
in accordance with an embodiment;
[0023] FIG. 10 depicts a view of a document being collaboratively
edited, in accordance with an embodiment; and
[0024] FIG. 11 shows components of a computer that may be used to
implement certain embodiments.
DETAILED DESCRIPTION
[0025] FIG. 1 shows a communication system 100 that may be used to
provide document services in accordance with an embodiment.
Communication system 100 includes a network 102, a server 104, and
user devices 106-A, 106-B, etc. For convenience, the term "user
device 106" is used herein to refer to any one of user devices
106-A, 106-B, etc. Accordingly, any discussion herein referring to
"user device 106" is equally applicable to each of user devices
106-A, 106-B, etc. Communication system 100 may include more or
fewer than two user devices.
[0026] In the exemplary embodiment of FIG. 1, network 102 is the
Internet. In other embodiments, network 102 may include one or more
of a number of different types of networks, such as, for example,
an intranet, a local area network (LAN), a wide area network (WAN),
a wireless network, a Fibre Channel-based storage area network
(SAN), or Ethernet. Other networks may be used. Alternatively,
network 102 may include a combination of different types of
networks.
[0027] In one embodiment, server 104 may include a collaborative
development service and therefore, the terms server 104 and a
collaborative development server may be herein used
interchangeably. In one embodiment, server 104 may host a website
108 that can be accessed by user devices 106-A and 106-B. In an
alternative embodiment, website 108 may be hosted by a different
server. Server 104 via website 108 provides user devices 106-A and
106-B access to various webpages. In one embodiment, website 108
provides to user devices 106-A and 106-B access to one or more
webpages displaying a document. Documents may be related to a
variety of different content types, including, without limitation,
text documents, spreadsheets, drawings, photographs, images, video
files, music or audio files, designs, etc. or a combination of
these content types. User devices 106-A and 106-B may access a
World Wide Web page on website 108 that may be viewed using a
conventional Web browser, for example. In one embodiment, multiple
users employing respective user devices 106-A and 106-B may access
website 108 to collaboratively view and/or edit a document.
[0028] In certain embodiments, collaborative document editing
services are provided to multiple users of multiple user devices.
User devices 106-A and 106-B may each be any device that enables a
user to view website 108 via network 102. User devices 106-A and
106-B may each be connected to network 102 through a direct (wired)
link or wirelessly. User devices 106-A and 106-B may each have a
display screen for displaying information. In the illustrative
embodiment, user device 106-B is a personal computer. In other
embodiments, user device 106-B may be any of a variety of devices
including a laptop computer, a workstation, a mainframe computer,
etc. In the illustrated embodiment, user device 106-A is a wireless
phone. In other embodiments, user device 106-A may be any of a
variety of devices including a personal digital assistant, cellular
device, a laptop computer, a netbook, a tablet device, a book
reader etc. Other devices may be used.
[0029] FIG. 2 depicts functional components of an exemplary user
device 106, in accordance with an embodiment. User device 106
includes a web browser 210, a display 220, and a memory 240. Web
browser 210 may be a conventional web browser used to access World
Wide Web sites via the Internet, for example. Display 220 displays
software applications, documents, images, webpages, and other
information. For example, all or a portion of a document that a
user creates or edits may be displayed on display 220. Memory 240
includes a font list 245 which includes one or more fonts 250
stored on user device 106. These fonts are stored locally and used
to render text for display on user device 106. In another
embodiment, font list 245 may not include fonts 250 (stored
external to font list 245). Rather, font list 245 may only provide
a list of all available fonts on user device 106.
[0030] FIG. 3 shows functional components of a server in accordance
with an embodiment. A server 104 includes a processor 375 and a
memory 325. Memory 325 includes a document 310 and a font database
350. Font database 350 may include several fonts (e.g., Fancy
Francais Font 305, Times New Hebrew 315, and Common Chinese Font
320). Font database 350 may include a database of fonts in all
available languages that can be supplied to user device 106. In
another embodiment, font database 350 may be located external to
server 104 (not shown) and can be accessed by server 104. Server
104 may include other components not shown in FIG. 3.
[0031] In accordance with the embodiment of FIG. 1, server 104
provides access to software applications including word processing
applications, spreadsheet applications, drawing tools, photo or
image editing applications, video editing applications, design
tools, software development tools, audio or music editing
applications, games, software applications having a shared user
space, etc. Server 104 provides document 310 to user device
106.
[0032] As one or more user devices access online documents on a
word processor, access to fonts may be needed. For example, suppose
that a user employing user device 106 accesses documents stored at
a server (e.g., server 104) via network 102. The server allows
simultaneous access to the documents to other users in a
collaborative development environment. Suppose that the user is
accessing a document containing Japanese character sets and
requires Japanese language fonts to properly view the contents of
the document. The user may use web fonts in order to view the
Japanese character sets.
[0033] Many web applications may use fonts that are not necessarily
available on the user's machine. Web fonts are the most common
technology using fonts which may not be available (e.g., may not be
stored locally on a user's machine). Loading all potential fonts
may not be practical because of the total size of those resources.
For example, when using a mobile device, it may be not practical to
download all fonts when only a few are needed. Therefore, fonts
that are likely to be used may be selectively loaded onto the
user's machine.
[0034] Web fonts include fonts hosted by a service provider that
can be accessed by users to view, render, or create characters. For
example, a service provider may enable a user to access and
download selected web fonts onto the user's computer.
[0035] In various embodiments, the user may be accessing documents
in an online mode or an offline mode. In an embodiment, the user
may be accessing documents in an online mode and then switch to an
offline mode. In an embodiment, the user may be accessing documents
in a collaborative environment. The user may be using a personal
computer, a laptop computer, a workstation, a mainframe computer, a
mobile communication device such as a wireless phone, a personal
digital assistant, a cellular device, a laptop computer, a netbook,
a tablet device, an electronic book reader etc. Other devices may
be used.
[0036] Specifically, the user may request access to a Japanese
character font set from a server in real-time as needed when
accessing the document. The server receives the request via network
102, and in response to receiving the request for the Japanese
character font set may provide the user's device with the Japanese
character font set. The device may then permanently or temporarily
cache a local copy of the Japanese character font set. Details
regarding obtaining fonts in a dynamic fashion, as needed, are
described herein.
Selection of Fonts Based on Languages
[0037] In one embodiment, one or more fonts are selected and
provided to a user's device based on a language that the user uses.
For example, a user accessing a particular document stored at the
server may select a menu of language options displayed on the
user's device, and select a particular language from the menu of
language options. The selection is transmitted by the user device
to the server via a network. At the server, the selection of a
language option is received. In response, the server identifies a
set of fonts related to the selected language. For example, the
server may access a database of fonts and identify one or more
fonts related to the particular language. The identified set of
fonts may include, for example, a limited number of fonts related
to the particular language selected by the user. The server
transmits the identified set of fonts to the user device. The user
device receives the set of fonts and stores the set of fonts in
local storage. The user device may then make the set of fonts
available to the user. The user device may apply the set of fonts
to the document. The selection of language may be automatic (e.g.,
based on a location of the user device, based on properties
associated with a document the user is accessing, etc.) or may be
manual. In one embodiment, server may inform user device of the
font, and user device may need to request the font.
[0038] In another embodiment, the user device may determine which
sets of fonts are required for downloading from the server. That
is, the user device includes software and/or hardware to determine
which sets of fonts are related to the selected language. For
example, the user device may access a list of all fonts available
to the server and identify one or more fonts on the list related to
the particular language selected by the user. The user device then
transmits a request for the set(s) of required fonts to the server.
The server then transmits the requested set(s) of fonts to the user
device. The user device receives the set(s) of fonts, stores the
set(s) of fonts in local storage, and may then apply the set(s) of
fonts to the document.
[0039] Users may access a document, webpage, etc. from a particular
geographic location. The locale of the user may be the user's
geographic location, the user's set region/country/location or
relate to a particular language/region, etc. Suppose that only
fonts that are appropriate for a language that the user is using
are to be shown. It may not be useful for the user to see or apply
fonts that do not have glyphs for the character set of the language
they are typing in. Therefore, the user may be dynamically provided
with fonts based on either, or some combination of, the particular
document's language setting, the user's language setting, or the
system's language setting. In an embodiment, the locale of the user
may be automatically detected or set to a default language. For
example, if the user's location is in France, the system's default
language setting may be French. The user may need to access a font
entitled Fancy Francais Font 305 in order to read and/or write to a
document.
[0040] FIG. 4 depicts a view of an electronic document, according
to an embodiment. A view 400 provides a view of document 310,
displayable to a user employing user device 106. View 400 may be
displayed within a graphical user interface on display 220 of user
device 106. Document 310 may be created using a software
application including a document processor, an image processor, a
spreadsheet processor, a presentation processor, etc. Document 310
depicted by FIG. 4 may be any kind of electronic document,
including a text document, a word processing document, an image, a
video, a spreadsheet, a presentation, or a combination of
documents. Suppose now that a user named Hailey employing user
device 106 creates document 310. Document 310 is stored on server
104. A copy of document 310 may also be stored locally on user
device 106, so that user device 106 can access document 310
locally, when user device 106 is offline. Suppose now that Hailey
wishes to create a document named Hailey's World Travels 402 to
store information about her world travels. As Hailey travels, she
documents information about each location she visits in document
310.
[0041] In an entry 404 dated Aug. 9, 2012, Hailey inserts a
paragraph into document 310. Hailey types onto user device 106 the
text to be entered into 404. Hailey may enter the text using any of
a variety of methods including typing on a keyboard, speaking into
a microphone included in user device 106 that converts the speech
into text, etc. User device 106 may store a local copy of the
entered text into memory 240. As described above, a local copy of
document 310 may also be stored in memory 240 on user device
106.
[0042] When server 104 receives the text entered by Hailey using
user device 106, via network 102, server 104 saves the text in
memory 325. Hailey may then view the text using user device 106. In
an embodiment, user device 106 may provide a location (e.g., a
Global Positioning System (GPS) location) of user device 106 to
server 104. In the illustrative embodiment of FIG. 4, this location
may be San Francisco. User device 106 may provide a very specific
current location to server 104. For example, user device 106 may
inform server 104 that the current location of user device 106 is
at terminal X, gate 2 at San Francisco airport. User device 106 may
use a variety of methods to determine the current location (e.g., a
GPS, cell tower triangulation, Internet protocol (IP) address of a
local wireless access network, etc.).
[0043] In an embodiment, user device 106 may provide the contents
of font list 245 to server 104 so that server 104 can determine
which fonts 250 are available to user device 106.
[0044] Suppose now that Hailey travels to Shanghai, China on Aug.
14, 2012. Hailey may wish to create an entry 406 during her visit
to China. In an embodiment, Hailey may employ user device 106
(e.g., a laptop, a smartphone, etc.) which is the same user device
she used to enter entry 404. In another embodiment, Hailey may
utilize a different device. For example, Hailey may visit an
Internet cafe in China to connect with server 104 in order to
create the new entry into document 310.
[0045] In an embodiment, when Hailey connects and/or logs in to
server 104 to access document 310, a location associated with the
device used to log in may be provided to server 104. Server 104
then determines that Hailey is located in Shanghai, China. The
change in Hailey's location alerts server 104 to determine whether
any new fonts are associated with the new location that Hailey's
user device may not have access to. For example, if Hailey is using
user device 106 to connect to server 104, server 104 checks the
contents of font list 245. Server 104 may determine that Chinese
style fonts are missing from the list of fonts 250 that are
available to user device 106. Server 104 then alerts user device
106 of the missing Chinese style fonts. User device 106 may then
request the Chinese style fonts from server 104. In response to the
request, server 104 accesses font database 350 to access Common
Chinese Font 320 and then provides Common Chinese Font 320 to user
device 106.
[0046] In another embodiment, suppose that Hailey accesses document
310 stored on server 104 using another device, which contains
Chinese style fonts. In this embodiment, server 104 may determine
that the other device already has access to Chinese style fonts and
does not need to provide any new fonts to the device.
[0047] In entry 406, Hailey uses Common Chinese Font 320 to type
the characters ." As user device 106 has installed Common Chinese
Font 320 and stores it onto memory 240, Hailey may use Common
Chinese Font 320 to render text.
[0048] Suppose now that Hailey visits St. Petersburg, Russia and
creates entry 408. When Hailey accesses document 310, server 104
receives Hailey's new location and determines that user device 106
does not have Russian fonts installed. Server 104 alerts user
device 106, and user device 106 requests Russian fonts. Server 104
then transmits the new Russian fonts to user device 106 so that
Hailey can type text into document 310 that can be rendered using
the Russian language fonts. In another embodiment, server 104 may
transmit only a list of the new Russian fonts (and not the actual
font files) to user device 106. User device 106 may check the fonts
in font list 245 to determine whether the new Russian fonts are
required. If user device 106 determines that the new Russian fonts
are required and are not available on font list 245, user device
106 may request the new Russian fonts from server 104.
[0049] In another embodiment, suppose now that Hailey does not log
entry 408 until she returns to her home in San Francisco. Although
Hailey (or Hailey's device) is not physically located in Russia,
Hailey may still access Russian fonts. In an embodiment, Hailey may
access document 310's properties in a view 600, as depicted in FIG.
6. View 600 provides a view of document 310, displayable to a user
employing user device 106. View 600 may be displayed within a
graphical user interface on display 220 of user device 106. Hailey
may then change the document language settings using a drop down
menu 604 and select Russian. User device 106 would then provide the
change in language settings to server 104. Server 104 makes a
determination that Russian language fonts are not available to user
device 106 and informs user device 106 of this. User device 106 may
then request the Russian language fonts from server 104. Hailey may
then type text using Russian language fonts.
[0050] Referring now to FIG. 1, details regarding how server 104
determines whether or not user device 106 has a specified font are
described. In one embodiment, in order to make the determination,
server 104 communicates with user device 106 which selects an
element, measures the width of the element and compares the width
of the element with an expected width of the specified font. When a
web service specifies two or more fonts in an HTML element, a
browser on user device 106 chooses a font that can render all
characters in the element.
[0051] For example, suppose that a user wishes to use a first font
to render the text "abcdefghi . . . z." A browser on the user's
device detects that the first font is not
installed/cached/downloaded/stored on the user's device. However, a
second font is installed and available for use by the user's
device. The browser then makes a substitution and uses a second
font to render the text "abcdefghi . . . z," instead of using the
first font to render the text.
[0052] When the first font is not available, a fallback font may be
used instead. In selecting which font to substitute for the
unavailable first font (i.e. the second font), the browser makes
the following determination. The text width of "abcdefghi . . . z"
when rendered using the first font must be equal to the text width
of "abcdefghi . . . z" when rendered using the second font. If the
text width of the text when rendered using the first font is equal
(or substantially equal or within a preset range, e.g., off by 3%,
etc.) to the text width of the text rendered using the second font,
then the user device may make the substitution described above.
[0053] If, however, the text width of the text when rendered using
the first font is not equal to (or not substantially equal to or
not within a present range of) the text when rendered using the
second font, the user device determines that the first font must be
used and no substitution should be made. That is, if the width of
the text (or some sample text) rendered using the first font is not
equal to the width of the text rendered using the second font, the
user device does not use substitute the text using the second font.
Instead the user device determines that the first font should
instead be installed and/or downloaded from the server.
[0054] Server 104, in communication with user device 106, via
network 102, can make a determination as to whether or not to
install the first font on user device 106 using the following
steps. In an alternate embodiment, user device 106 may make the
determination. [0055] Two HyperText Markup Language (HTML) elements
for the text "abcdefghi . . . z" rendered using the first font and
the second font are determined; [0056] When the width of the text
rendered using the first font is equal to the width of the text
rendered using the second font, the firsts font is not installed to
the user device; [0057] When the width of the text rendered using
the first font is not equal to the width of the text rendered using
the second font, it is determined that the first font should be
installed and the first font is downloaded to the user device.
[0058] The above steps may also be used for determining whether a
font has a certain glyph. For example, suppose that a user is in
France and has set the language settings to French. When the server
wishes to determine if a third font contains a glyph for French
ligature "oe", the server determines two elements including the
ligature. The first element uses a first font family: "font-family:
third_font, fourth_font;" and the second element uses a second font
family: "font-family: fourth_font;". The server determines that if
the width of the text "oe" rendered using the first font family is
equal to the width of the text "oe" rendered using the second font
family, the third font does not have the glyph. In another
embodiment, the determination of whether a font has a certain glyph
may be made by the user device or the user device in combination
with the server.
[0059] Most applications may show all fonts available and may not
filter based on settings. An alternative would be to either show
all fonts available for the application, browser, or system and/or
have the user choose a font that does not have glyphs for the
character set of the language the user is typing in (e.g., French).
For example, if the user only has access to only Spanish and
English fonts saved on the user's device, the user may either see a
dummy character for the French words/characters/symbols, etc. or
some default font may be used to view the document. Other
applications may list all the fonts on a user's system and create a
separate category with just a subset of the ones specific to the
system language. Other applications may provide a way to manage the
font files on a computer while the present disclosure provides for
making different sets of fonts available to use within an
application.
[0060] FIG. 5 is a flowchart of a method for providing fonts to a
user based on location, in accordance with an embodiment.
[0061] At step 502, a user device is provided access to a document
via a network. User device 106 is provided access to document 310
via network 102, by server 104. Server 104 provides a user
employing user device 106 with access to document 310, should the
user wish to create a new document or view or edit an existing
document. Server 104 may require a login name and password prior to
allowing the access to the user.
[0062] At step 504, an update to a language parameter associated
with the document is detected. Server 104 detects an update to a
language parameter associated with document 310. A language
parameter of document 310 indicates language(s) associated with
document 310. For example, server 104 may receive location
information from user device 106. Upon receiving location
information from user device 106 (e.g., where the location
information is determined using a GPS, etc.), server 104 may
determine that the location of user device 106 has changed since
the last time user device 106 had accessed document 310. In
response to receiving the updated location, server 104 determines
that an update to the language parameter associated with document
310 is needed. The language parameter may have previously been set
to the English language and the update may set the language
parameter to the French language. Server 104 may associate one or
more locations with a language, and/or associated one or more fonts
with the language. For example, the French language may be
associated with locations (e.g., France, French Polynesia, Canada,
etc.) and have associated fonts (e.g., Fancy Francais Font 305). In
an embodiment, the document itself may be set to a particular
language that has fonts associated with that language.
[0063] In an embodiment, a location may be associated with multiple
languages and/or multiple fonts. For example, if user device 106,
located in Switzerland, sends its location to server 104, server
104 may determine that the update to the language parameter
requires multiple fonts in multiple languages (e.g., French,
Italian, German, and Romansh).
[0064] At step 506, fonts associated with the update to the
language parameter are determined. Server 104 determines fonts
associated with the update to the language parameter. For example,
if the update to the language parameter includes the French
language, server 104 determines that Fancy Francais Font 305 is
associated with the update to the language parameter.
[0065] At step 508, it is determined that at least one of the fonts
is not available on user device 106. Server 104 determines that at
least one of the fonts (e.g., Fancy Francais Font 305) is not
available on user device 106. Server 104 may, for example, compare
Fancy Francais Font 305 to fonts 250 in font list 245, received
from user device 106, to determine if Fancy Francais Font 305 is
listed on font list 245.
[0066] At step 510, server 104 provides the at least one of the
fonts to the user device. Server 104 provides Fancy Francais Font
305 to user device 106, in response to determining that user device
106 does not have access to Fancy Francais Font 305. The step of
providing the at least one of the fonts to user device 106 includes
providing a font file wherein the font file includes a set of
glyphs, characters, or symbols.
[0067] User device 106 stores locally a copy of Fancy Francais Font
305 (e.g., in font list 245). User device 106 may then type and/or
view French language text in document 310. French text is rendered
using Fancy Francais Font 305 and displayed to the user.
[0068] Upon downloading Fancy Francais Font 305, user device 106
may update font list 245 to include Fancy Francais Font 305 in
fonts 250. Server 104 may receive an updated font list including
Fancy Francais Font 305 from user device 106. In this way, server
104 stores an updated list of fonts that are available to user
device 106. In an embodiment, when user device 106 changes
locations, the steps listed in FIG. 5 may be repeated.
[0069] An example of a list of available languages is provided in
FIG. 7, in accordance with an embodiment.
[0070] Although the above description of FIG. 5 describes the
server performing the steps of FIG. 5, in accordance with an
embodiment, one or more of steps 502, 504, 506, 508, or 510 may be
performed by user device 106. For example, user device 106 may use
logic stored therein to determine which fonts are required by user
device 106 and then request those fonts from server 104.
[0071] FIG. 8 is a flowchart of a method of providing fonts to a
user device, in accordance with an embodiment. These described
parameters are used by server 104 to determine whether or not fonts
are required by a user device.
[0072] At step 802, a new document is created for a user device.
Server 104 creates document 310 for user device 106. Server 104 may
receive a request for creating document 310, via network 102.
Server 104 may require authentication (e.g., a login user name and
associated password, etc.) of a user employing user device 106
prior to creating document 310.
[0073] At step 804, it is determined whether location information
received from the user device is indicative of a new location.
Server 104 determines whether or not location information received
from user device 106 is indicative of a new location. Location
information may be communicated to server 104 by user device 106,
via network 102. For example, if user device 106, after logging
into server 104 to create document 310, changes locations, the
location information transmitted by user device 106 and received by
server 104 would be indicative of a new location. User device 106
may use one of a multitude of methods to determine that the
location of user device 106 has been updated or changed (e.g., by
using GPS, etc.). In an embodiment, server 104 may compare the
location information received from user device 106 during a
previous session (e.g., the last time user device 106 logged onto
server 104) with a current location information received from user
device 106 in order to determine whether the location information
is new.
[0074] In response to determining that the location information
received from user device 106 is indicative of a new location
(i.e., a "yes" response to the decision box in step 804), the
flowchart continues to step 812 (described below). In response to
determining that the location information received from user device
106 is not indicative of a new location (i.e., a "no" response to
the decision box in step 804), the flowchart continues to step
806.
[0075] At step 806, a determination is made whether a change in
document language settings is received from the user device. Server
104 determines whether a change in document language settings is
received from user device 106. The change in document language
settings may be set by a user employing user device 106 and sent to
server 104, via network 102. The change in document language
settings may occur, for example, when a user selects a new document
language setting in a view, as shown in FIG. 6.
[0076] In an embodiment, when the document's language setting is
changed, the font menu within a document may be dynamically
changed. This may be implemented for a subset of languages (e.g.,
Arabic, Hindi, Hebrew, Japanese, Korean, That, and Chinese). A user
may be allowed to use web fonts from the font directory based on
the document's language.
[0077] In response to determining that a change in document
language settings is received from user device 106 (i.e., a "yes"
response to the decision box in step 806), the flowchart continues
to step 812 (described below). In response to determining that
change in document language settings is not received from user
device 106 (i.e., a "no" response to the decision box in step 806),
the flowchart continues to step 808.
[0078] At step 808, a determination is made whether a new language
associated with the document is received from the user device.
Server 104 determines whether a new language associated with
document 310 is received from the user device 106. The new language
associated with document 310 may be set by a user employing user
device 106 and sent to server 104, via network 102. The new
language may be manually entered by a user employing user device
106 or may be automatically detected by user device 106, which
communicates the new language to server 104. For example, the user
may indicate that he/she wishes to include fonts associated with a
new language that are not accessible by user device 106.
Alternatively, device 106 may detect the need for new fonts
associated with a new language when user device 106 changes
geographic locations.
[0079] In response to determining that a new language associated
with document 310 is received from user device 106 (i.e., a "yes"
response to the decision box in step 808), the flowchart continues
to step 812 (described below). In response to determining that a
new language associated with document 310 is not received from user
device 106 (i.e., a "no" response to the decision box in step 808),
the flowchart continues to step 810.
[0080] At step 810, a determination is made whether contents of the
document indicative of a new font are received. Server 104
determines whether contents of document 310 indicative of a new
font are received from the user device 106. Server 104 may
determine whether contents of document 310 are indicative of a new
font using several methods. For example, server 104 may detect
whether a user employing user device 106 has copied items in a new
font onto a clipboard. Server 104 may receive an indication from
user device 106 of new hardware equipment (e.g., the installation
of a Chinese language keyboard, etc.) and a user employing user
device 106 may begin typing content onto document 310, which may
cause server 104 to determine that the content is indicative of a
new font not available to user device 106.
[0081] In response to determining that contents of document 310
indicative of a new font are not received from user device 106
(i.e., a "no" response to the decision box in step 810), the
flowchart returns to step 804.
[0082] In response to determining that contents of document 310
indicative of a new font are received from user device 106 (i.e., a
"yes" response to the decision box in step 810), the flowchart
continues to step 812. At step 812, a determination is made as to
whether the user device has all necessary fonts installed. Server
104 makes a determination as to whether user device 106 has all
necessary fonts installed. Server 104 may compare font list 245,
received from user device 106, via network 102, to any new fonts
needed as a result of any of the parameters indicated by steps 804,
806, 808, and 810. If server 104 determines that user device 106
has all the necessary fonts installed (i.e., a "yes" response to
the decision box in step 812), the flowchart returns to step 804.
If however, server 104 determines that some necessary fonts are not
listed in font list 245 (i.e., a "no" response to the decision box
in step 812), the flowchart continues to step 814.
[0083] At step 814, new fonts are provided to the user device.
Server 104 provides any new fonts not available to user device 106,
via network 102. User device 106 may then locally download the
fonts and render text entered in document 310 using the new
fonts.
[0084] In an alternate embodiment, the user device determines which
fonts are required and sends a request to the server to download
the fonts.
[0085] In an embodiment, partial font sets are downloaded onto the
user device. For example, a font may use the Latin alphabet and the
Cyrillic alphabet. If it is determined by the server that the user
is expected to use Cyrillic characters, only the Cyrillic alphabet
of the font may be downloaded by the user device.
[0086] Steps 804, 806, 808, and 810 provide decision boxes for
determining whether or not fonts are required. In an embodiment,
one or more of the decision boxes in FIG. 8 may be used to
determine whether fonts are required. However, it may not be
necessary to perform all of the steps shown in FIG. 8. For example,
a determination may be made that that contents of the document
indicative of a new font are received, as shown in step 810,
without the need to make any other determination. Furthermore,
multiple determinations may be made (e.g., it may be determined
whether a change in document language settings are received from
the user device in step 806 and whether contents of the document
indicative of a new font are received in step 810), while other
determinations may not be made. In an embodiment where multiple
determinations are made, a timer may be set before the
determination in step 812 is made to ensure that responses to the
multiple decision boxes are received prior to determining whether
the device has all the necessary fonts installed. Therefore, one or
more of the decisions indicated by the decision boxes in FIG. 8 may
be performed. Additionally, after step 814, in an embodiment, the
flowchart may return to any of the previous decision boxes.
[0087] Although the above description of FIG. 8 describes the
server performing the steps of FIG. 8, in accordance with an
embodiment, one or more of the steps shown in FIG. 8 may be
performed by user device 106. For example, user device 106 may use
logic stored therein to determine one or more of the decisions
depicted in steps 804, 806, 808, 810, or 812. In response to
determining that new fonts are needed, user device 106 may then
request the new fonts from server 104.
Dynamically Loading Web Fonts Based on User Actions
[0088] In an embodiment, fonts may be loaded before the fonts are
actually visible to the user. Pre-loading of fonts may prevent the
font from being displayed incorrectly and then flickering as the
true font loads.
[0089] The following describes some examples of pre-loading,
pre-fetching, and/or optimistically fetching the necessary font.
[0090] Copy/paste: A user employing user device 106 may copy
content from a webpage, document, web-based application (e.g.,
online email), etc. that the user wishes to paste into a document.
The content may be rendered using a specific font. In an
embodiment, user device 106 may not have the specific font cached
locally on the user's browser (e.g., for use in an application used
to edit document 310). If the user pastes the content into the
document in the specific font, then the font may be loaded
immediately from server 104 onto user device 106. In an embodiment,
when the content is copied by the user, the content is added to a
local clipboard. Upon detecting that there is an unavailable font
on the clipboard (e.g., the font that is used to render text copied
onto the clipboard is not made available to the user device editing
document 310), server 104 may communicate with user device 106
regarding the unavailable font. User device 106 may send a request
to server 104 to retrieve the font. User device 106 may communicate
the name of the font. Server 104 receives the request, and, in
response, transmits the requested font to user device 106. When
user device 106 receives the font identified by the name of the
font, user device 106 downloads the font. In case server 104 does
not have access to the font, server 104 may retrieve the font from
an external source prior to transmitting it to user device 106.
After server 104 provides the font to user device 106, the device
may cache the font locally before the user pastes the content. The
user may then paste the content, which is rendered in the specific
font by user device 106, as the device has locally stored the font.
Therefore, user device 106 may be provided with the font before the
user pastes the content. The retrieval of the font between the
copying and pasting steps by the user may be performed
substantially quickly and the user may not even realize that the
specific font was unavailable to the user at any point. [0091]
Frequent use: If it is detected that a user has recently used a
font in another document, the font may be adaptively downloaded
onto the user's device such that the font is reused in the user's
current document. The server may detect that the user has recently
used a font in a different document. In another embodiment, the
user's device may detect that the user has recently used the font
in a different document, different application, different program,
etc. In response, the device may communicate with the server and
inform the server that the user has used the font. The server then
locates and or retrieves the font (e.g., by accessing a database of
fonts) and offers the font for download to the device. The device
then download the font and stores it locally so that the user may
use the font in a current document the user is creating, editing
and/or viewing. [0092] Loading for other applications: Some
document applications support importing data from other files
(e.g., import slides from another presentation into a user's
current presentation). When the user selects a presentation
containing slides to import, the fonts from that presentation may
be loaded before the slides are loaded into the current
presentation. The server may detect that the user has selected a
presentation to import. In another embodiment, the user's device
may communicate with the server to inform the server that the user
has selected a presentation to import. The server may then
automatically detect all the fonts associated with the presentation
and perform a check to determine whether the fonts are stored on
the user's device. In response to determining that one or more of
the fonts are not stored on the user's device, the server may then
offer the fonts for download onto the user's device. The user may
then download the fonts onto his/her device and use the fonts.
[0093] Collaborator action: One or more collaborators may access a
document. The collaborators may each view and/or collaboratively
edit the document. The server, in response to receiving a request
for a font from one of the collaborators, offers the font for
download to the collaborator. If the server detects that the
collaborator that has added the requested font to his/her font menu
on his/her device and that the font is not available to one or more
of the other collaborators, or that the collaborator is a frequent
user of fonts that other collaborators do not have available, then
those fonts may be loaded optimistically. In accordance with an
embodiment, the server may communicate with each of the
collaborators' devices at the same time or directly after offering
the requested font for download to the collaborator requesting the
font. As a result of this communication, the server determines
whether or not the devices have the font stored locally.
[0094] In accordance with an embodiment, the collaborator's device
may use logic stored therein to determine which fonts appear in the
font menu based on the language of the document. The collaborator's
device may then communicate to the server the fonts that are needed
by the collaborator's device and the server may then transmit the
necessary fonts.
[0095] In a collaborative editing environment, server 104 detects
an action of a user employing user device 106-A relating to
document editing or document processing. For example, server 104
may detect that a user has selected a "paste text" option to paste
some content into the document being collaboratively edited and/or
viewed. In another example, the server may detect that one
collaborator (e.g., employing user device 106-B) among a plurality
of collaborators has downloaded a particular font. In response to
detecting the user action, the server identifies, optimistically, a
particular user and a font that the user is likely to require. The
particular user identified may be the same user who performed the
detected action, or may be a different user. The server then
downloads the identified font to the particular user's device. For
example, when a user pastes text associated with a particular font,
the server may download the particular font to that user's device.
If a first collaborator among a plurality of collaborators
downloads a particular font, the server may identify that a second
collaborator's device does not have the particular font, and offer
the particular font for downloading to the second collaborator's
device. In an embodiment, the server may query the device to
determine if the device already has the font saved. If the device
does not have the font saved, the server then offers the font to
the device for downloading.
[0096] Using these approaches advantageously allows a more
intelligent manner of selecting which web fonts to download and/or
cache onto a user's device. If the user requires access to a font
to view a document, the seamless manner of retrieving the font is
performed in such a way that the user may not even realize the font
was at one time unavailable and was recently loaded. Therefore, the
user may not perceive any difference in viewing a document
containing characters rendered using a font that was locally cached
versus characters rendered using a font that was not previously
cached but was recently downloaded. In an embodiment, fonts are
advantageously downloaded before a user needs or wants to access
the fonts.
[0097] In an embodiment, fonts may be automatically downloaded
based on a user's action. For example, if a user types a Hebrew
character, the user's device my optimistically download one or more
Hebrew language character font sets. In another embodiment, if the
user's device has not yet fetched or downloaded the required fonts
(or is in the process of fetching or downloading the fonts) needed
to view a document, the user's device may provide the user with a
warning indicating that the fonts are not available, that the fonts
are currently being downloaded or asking permission of the user
prior to downloading the fonts.
[0098] FIG. 9 is a flowchart of a method of providing fonts to
collaborative users in a collaborative online development network,
in accordance with an embodiment. At step 902, a first user device
is provided access to a document in a collaborative online document
environment via a network. Server 104 (i.e., a collaborative
development server) provides access to document 310 to user device
106-A (e.g., a first user device), via network 102. Prior to
providing access to document 310, server 104 may require
authentication (e.g., a login user name and associated password,
etc.) of a user employing user device 106-A. In an embodiment, only
in response to performing authentication of user device 106-A is
user device 106-A provided with access to document 310. The user
employing user device 106-A may be a creator of document 310 or may
be a collaborator that is accessing document 310, which may be
created by another collaborator.
[0099] At step 904, a second user device is provided access to the
document in a collaborative online document environment via a
network. Server 104 provides access to document 310 to user device
106-B (e.g., a second user device), via network 102. Prior to
providing access to document 310, server 104 may require
authentication (e.g., a login user name and associated password,
etc.) of a user employing user device 106-B. In an embodiment, only
in response to performing authentication of user device 106-B is
user device 106-B provided with access to document 310. The user
employing user device 106-B may be a creator of document 310 or may
be a collaborator that is accessing document 310, which may be
created by another collaborator.
[0100] As described herein below, user device 106-A stores a font
list, which is referred herein to as font list 245-A, and user
device 106-B stores a font list, which is referred herein to as
font list 245-B.
[0101] At step 906, a list of fonts available to the second user
device is received. Server 104 receives font list 245-B from user
device 106-B, via network 102. In an embodiment, user device 106-B
may transmit font list 245-B to server 104, via network 102, upon
logging in to server 104 to access document 310. In an embodiment,
user device 106-B may transmit font list 245-B every time at log
in. In this way, server 104 can determine which fonts listed in
font list 245-B are available to user device 106-B and when there
is a change in font list 245-B (e.g., when fonts are added or
removed from font list 245-B), server 104 keeps track of the
change. In another embodiment, user device 106-B may be send font
list 245-B periodically and/or on a scheduled basis to server 104.
In another embodiment, user device 106-B, upon detecting a change
in font list 245-B, may transmit font list 245-B to server 104.
[0102] Similar to user device 106-B, server 104 may also receive a
font list from user device 106-A (e.g., upon user device 106-A
logging in, etc.).
[0103] Upon receiving font list 245-B from user device 106-B,
server 104 may compare font list 245-A belonging to user device
106-A with font list 245-A belonging to user device 106-B. In an
alternate embodiment, server 104 may transmit user device 106-B's
font list (i.e., font list 245-B) to user device 106-A, and user
device 106-A may make a determination of whether to request fonts
that are on the font list (i.e., font list 245-A) which are not
available to user device 106-A. Details regarding the alternate
embodiment are described herein with respect to the following steps
of FIG. 9.
[0104] At step 908, the list is transmitted to the first user
device. Server 104 transmits font list 245-B (which is the font
list that belongs to user device 106-B) to user device 106-A, via
network 102. User device 106-A, upon receiving font list 245-B,
makes a comparison between stored font list 245-A and received font
list 245-B. If all fonts listed in font list 245-B are already in
font list 245-A, user device 106-A does not need to download any
new fonts.
[0105] However, in an alternate embodiment, suppose that user
device 106-A finds one or more new fonts listed in font list 245-B.
User device 106-A then sends a request for the one or more new
fonts. At step 910, a request is received from the first user
device to provide at least some of the fonts identified in the
list. Server 104 receives a request from user device 106-A, via
network 102, to provide at least some of the fonts identified in
font list 245-B which are not available to user device 106-A.
[0106] At step 912, the at least one font is provided to the first
user device. Server 104 provides the at least one font to user
device 106-A, via network 102. Server 104 may provide a font file
that includes the font family, font glyphs, etc. to user device
106-A.
[0107] Upon downloading the at least one font, user device 106-A
possesses the same fonts as user device 106-B. In this way, when
user device 106-B is collaboratively editing document 310 and using
any of a number of fonts listed in font list 245-B to render text
entered in document 310, user device 106-A may also view the text
rendered using any font available to user device 106-B. Server 104
may receive an updated list of fonts available to user device
106-A, wherein the updated list includes a name of the at least one
font.
[0108] In an embodiment, user device 106-B may also communicate
with server 104, via network 102, in order to receive font list
245-A. User device 106-B may then compare font list 245-B (stored
locally) with font list 245-A to determine if there are any fonts
listed in font list 245-A which are not available to user device
106-B.
[0109] In an alternate embodiment, server 104 may perform the
comparison between the font lists belonging to different user
devices to determine which user device requires fonts which are
available to one user device and not available to another user
device.
[0110] If a user device already has all the fonts that another user
device has access to, then no additional fonts are needed by the
user device.
[0111] In an embodiment, each time a collaborator accesses document
310, server 104 may communicate with the collaborator's user device
to perform the steps described above with respect to FIG. 9.
[0112] In an embodiment, server 104 may communicate with all
collaborator user devices in order to create a master list that is
a superset of all available fonts on all collaborator user devices
accessing document 310. Server 104 may then transmit the master
list that is a superset of available fonts to each of the
collaborator user devices so that each of the collaborator user
devices can requests any fonts which are not locally available.
Once all collaborator devices have downloaded all the fonts which
are listed in the master list, whenever any collaborator edits
and/or types into document 310, all collaborator devices can
provide a proper view of the text rendered using any of the fonts
listed in the master list.
[0113] FIG. 10 depicts a view of a document being collaboratively
edited, in accordance with an embodiment. Server 104 may receive
commands from user device 106-A and user device 106-B to
simultaneously edit the document. A view 1000 provides a view of
document 310, displayable to a user employing user device 106. View
1000 may be displayed within a graphical user interface on display
220 of user device 106. View 1000 depicts a list of collaborators.
The list of collaborators may include information related to the
collaborators such as an avatar, an image, etc., an email address,
a screen name, etc. associated with the user. Block 1002 shows
information related to user 106-A and block 1004 shows information
related to user 106-B.
[0114] Suppose now that two (or more) collaborators including user
106-A and user 106-B are viewing and/or editing document 310. For
example, two (or more) users may be transcribing speeches made at
an ambassadors' event onto document 310. User 106-A may be
transcribing a speech into English by typing text 1010 rendered
using an English language font. User 106-B may be transcribing the
same speech into Hebrew by typing text 1012 rendered using a Hebrew
language font. Other users may also be editing document 310 by
adding text rendered in various types of fonts in a multitude of
languages.
[0115] In order for user 106-A to view text 1012 entered into
document 310, user device 106-A must have access to the Hebrew
language font used by user 106-B to type text 1012. In an
embodiment, when user 106-B employing user device 106-B logs into
server 104 (after server 104 performs authentication of user 106-B
and authenticates user 106-B), server 104 may receive a font list
of all fonts (including Hebrew language fonts) that are available
to user device 106-B. Server 104 may then transmit the font list to
user device 106-A, so that user device 106-A may ensure that user
device 106-A has access to all the fonts that are listed in the
font list of user device 106-B.
[0116] In another embodiment, user 106-B may begin typing text onto
document 310 where the font of the rendered text is a Hebrew
language font. When the server receives the text entered by user
106-B, the server determines that user 106-B is rendering the text
in a Hebrew language font. At that point, server 104 may transmit
the Hebrew language font to user device 106-A. If the Hebrew
language font is not available to user device 106-A, user device
106-A may download the font. In this way, as user 106-B is typing,
user 106-A can view the text which is rendered using the proper
Hebrew font.
[0117] In an embodiment, server 104 may receive commands from user
device 106-A and user device 106-B (and other collaborator devices)
to simultaneously edit the document.
[0118] Other collaborators of document 310 may download all the
fonts used in document 310 onto their respective devices, if the
fonts were previously unavailable. The collaborators may request
the required fonts from server 104, which in turn would provide the
fonts to collaborators so that they may all properly view the
entered text rendered in the font that the collaborator typing the
text had intended to be used to view the text. Suppose that a
Russian transcriber joins in to edit document 310. Upon the Russian
transcriber logging into server 104 (after authentication is
performed and a determination is made that the Russian transcriber
has been granted permission to view and/or edit document 310), all
other collaborators are provided with Russian language fonts that
are available to the Russian transcriber's device.
[0119] In an embodiment, when user 106-B logs into server 104,
server 104 transmits document 310 to user device 106-B. In an
embodiment, one cycle after user device 106-B loads document 310,
user device 106-B transmits the font list to server 104.
Offline
[0120] In an embodiment, the user may be provided with access to a
particular font (e.g., Fancy Francais Font 305) even when user
device 106 is offline. The particular font may be loaded onto user
device 106 when the device is online, and may be used by the user
at anytime (whether user device 106 is online or offline).
[0121] Suppose now that the user employing user device 106 is
browsing the web and editing document 310, while user device is
online. The user may copy some text (or image, graphics, etc.
having embedded text) onto the clipboard. User device 106 may be
online or offline when the user copies the text. Suppose that user
device 106 copies the text when offline. When user device 106 goes
back online, user device 106 may download the font used in the
copied text by requesting the font from server 104, if the font is
not available to use in editing document 310. Server 104 may
transmit the font which may be stored in font database 350. When
user device 106 download the font, the user may paste the text onto
document 310 and the text is then rendered using the downloaded
font. The font is then available for the user to use to edit
document 310 regardless of whether or not user device 106 is in
online or offline. In this way, user device 106 dynamically and
intelligently selects fonts for downloading as needed (e.g., upon
detecting of addition of text requiring a new font). Thus, user
device 106 does not need to download a large amount of fonts which
the user may or may not use. Rather, user device 106 is equipped
with the fonts which the user utilizes.
[0122] An alternative approach to selectively loading the required
fonts may be to load the web fonts that are in the document when
the document is first loaded and to load fonts that the user
explicitly requests in that session. More sophisticated approaches
in documents and presentations may be implemented. Web-based
editors may access web fonts to provide for greater numbers of
fonts and to reduce any assumptions about fonts that are present in
the document already.
[0123] Most applications that use web fonts may begin with a list
of fonts. They may not provide mechanisms for the users to change
their set of selected fonts as they are editing and they may not
account for situations where collaborator actions may the set of
loaded fonts to change. Selectively loading required fonts is
beneficial over systems having static access to fonts that are
saved locally.
Applications
[0124] In an embodiment, there may be a number of non-ideal
behaviors if a language for a document is not specified. These
include: [0125] User may not control which language is used for
spellchecking; [0126] Certain fonts for certain users may not be
shown; and [0127] Text/messages in the document text may not be
placed without knowing the language of the document. Or, the
text/messages would render, even if the font did not have glyphs
for that language, however, the text/messages may be unreadable
(e.g., may not be decipherable and may appear as gibberish).
[0128] User Interface (UI) languages may address the above
problems. However, in the case of collaborative document editing,
the UI languages of different users in the same document may be
different. Therefore, the concept of a "document language" to the
model that is shared by all users is introduced.
[0129] The language setting may be provided in the file menu of the
document processor. The file menu may provide a submenu 604 that
lists all the languages. An example of the File menu and submenu is
provided in a view FIG. 6. User device 106 may determine which sets
of fonts correspond to a language selected in submenu 604. User
device 106 may then determine if the font is stored locally and if
a font is needed that is not stored locally, user device 106 may
communicate with server 104, via network 102, to retrieve and cache
the font.
[0130] According to an embodiment, switching the language setting
may immediately switch the language for all users collaboratively
editing/viewing the document.
[0131] In an embodiment, the setting may start as the default
language from the document creator's locale. The setting may thus
be set originally according to the default language for one or all
of the users.
[0132] The setting may be used to control the following: [0133] The
language that spellchecking is executed in; [0134] The language
that is used when inserting text into the document (e.g., table of
content title, table of content empty placeholder text, etc.); and
[0135] The set of fonts that are displayed in the font dropdown
menu.
[0136] For previously existing documents, the setting may default
to null. Functionality that depends on this setting may be able to
handle the null case. For example, if the setting is null: [0137]
Spellchecking may auto-detect the language of the document; [0138]
The table of content text maybe be in the language of the user's
UI; and [0139] The font dropdown may be the default English
dropdown.
[0140] The default setting may be controlled by changing a user's
UI locale. A user preference may indicate the default in-document
language to be used whenever documents are created by that user. In
an embodiment, a tools menu may provide access to the settings. In
another embodiment, the document language setting may default to
the locale of the collaborator that created the document (or the
owner of the document) and may continue to be the locale of the
collaborator until another collaborator with edit access changes
the language setting via the menu to another language. In one
embodiment, the language setting may change dynamically
corresponding to the language of the collaborator editing the
document. For example, if one collaborator is editing the document
in German, the language setting may be set by the collaborator to
German or may be set automatically by the document processor to
German based on the collaborator's locale. If another collaborator
then edits the document in Finnish, the language setting may then
be changed to Finnish from German. The changing of the language
setting may be automatic or manually set. The language setting may
continuously and dynamically change based on the collaborators. In
an embodiment, the language setting may be dependent upon
permissions granted to the collaborators. For example,
collaborators who have write access may automatically or manually
change the language settings, whereas collaborators who only have
read access may not be granted permission to change the language
settings.
[0141] In an embodiment, spellchecking may be set to automatically
detect spelling errors by default in one language and a user may
force the spell check to change to another language for the
duration of a session. Automatically detecting spelling errors in a
language may perform spell checking of a document that contains
words in multiple languages. In an embodiment, the spell checking
feature may not be tied to the language setting of the document. In
an embodiment, it may be possible to default back to spell checking
in a default language if the language is not detected.
[0142] In an embodiment, necessary changes to allow for a language
setting in a document may be determined. Having a language setting
per document may allow things like spellchecking and
language-specific fonts to appear correctly even if the user
viewing it uses a different language. This language setting may
default to the selected language of the document creator (for
example, in the case of collaborative editing, where multiple
editors from different countries and/or understanding different
languages are collaborating together on a document).
[0143] A new language style may be created. It may contain an
enumeration property for the language which may be used as the
language setting.
[0144] For existing documents, this property may be null by
default. For new documents, this property may be set to the
document creator's locale (e.g.,
name.util.Config.PropertyName.LOCALE).
[0145] The class hierarchy may be: [0146]
name.protocol.LanguageStyle [0147] language: @ type {enum}
(nullable)
View
[0148] The document may show spellchecking corrections in the
chosen language. The loaded font styles may be based on the chosen
language.
Commands
[0149] The language setting may be applied by a new command,
ApplyLanguageStyleCommand.
Flag
[0150] enable_language
Menus/Dialog
[0151] The File Menu may have an item for Language and a sub-menu
listing all the languages available. There may be a check mark next
to the language that the document is set to.
[0152] Systems, apparatus, and methods described herein may be
implemented using digital circuitry, or using one or more computers
using well-known computer processors, memory units, storage
devices, computer software, and other components. Typically, a
computer includes a processor for executing instructions and one or
more memories for storing instructions and data. A computer may
also include, or be coupled to, one or more mass storage devices,
such as one or more magnetic disks, internal hard disks and
removable disks, magneto-optical disks, optical disks, etc.
[0153] Systems, apparatus, and methods described herein may be
implemented using computers operating in a client-server
relationship. Typically, in such a system, the client computers are
located remotely from the server computer and interact via a
network. The client-server relationship may be defined and
controlled by computer programs running on the respective client
and server computers.
[0154] Systems, apparatus, and methods described herein may be used
within a network-based cloud computing system. In such a
network-based cloud computing system, a server or another processor
that is connected to a network communicates with one or more client
computers via a network. A client computer may communicate with the
server via a network browser application residing and operating on
the client computer, for example. A client computer may store data
on the server and access the data via the network. A client
computer may transmit requests for data, or requests for online
services, to the server via the network. The server may perform
requested services and provide data to the client computer(s). The
server may also transmit data adapted to cause a client computer to
perform a specified function, e.g., to perform a calculation, to
display specified data on a screen, etc. For example, the server
may transmit a request adapted to cause a client computer to
perform one or more of the method steps described herein. Certain
steps of the methods described herein may be performed by a server
or by another processor in a network-based cloud-computing system.
Certain steps of the methods described herein may be performed by a
client computer in a network-based cloud computing system. The
steps of the methods described herein may be performed by a server
and/or by a client computer in a network-based cloud computing
system, in any combination.
[0155] Systems, apparatus, and methods described herein may be
implemented using a computer program product tangibly embodied in
an information carrier, e.g., in a non-transitory machine-readable
storage device, for execution by a programmable processor; and the
method steps described herein may be implemented using one or more
computer programs that are executable by such a processor. A
computer program is a set of computer program instructions that can
be used, directly or indirectly, in a computer to perform a certain
activity or bring about a certain result. A computer program can be
written in any form of programming language, including compiled or
interpreted languages, and it can be deployed in any form,
including as a stand-alone program or as a module, component,
subroutine, or other unit suitable for use in a computing
environment.
[0156] A high-level block diagram of an exemplary computer that may
be used to implement certain systems, apparatus and methods
described herein is illustrated in FIG. 11. Computer 1100 includes
a processor 1101 operatively coupled to a data storage device 1102
and a memory 1103. Processor 1101 controls the overall operation of
computer 1100 by executing computer program instructions that
define such operations. The computer program instructions may be
stored in data storage device 1102, or other computer readable
medium, and loaded into memory 1103 when execution of the computer
program instructions is desired. Thus, the method steps described
herein can be defined by the computer program instructions stored
in memory 1103 and/or data storage device 1102 and controlled by
the processor 1101 executing the computer program instructions. For
example, the computer program instructions can be implemented as
computer executable code programmed by one skilled in the art to
perform an algorithm defined by the method steps described herein.
Accordingly, by executing the computer program instructions, the
processor 1101 executes an algorithm defined by the method steps
described herein. Computer 1100 also includes one or more network
interfaces 1104 for communicating with other devices via a network.
Computer 1100 also includes one or more input/output devices 1105
that enable user interaction with computer 1100 (e.g., display,
keyboard, mouse, speakers, buttons, etc.).
[0157] Processor 1101 may include both general and special purpose
microprocessors, and may be the sole processor or one of multiple
processors of computer 1100. Processor 1101 may include one or more
central processing units (CPUs), for example. Processor 1101, data
storage device 1102, and/or memory 1103 may include, be
supplemented by, or incorporated in, one or more
application-specific integrated circuits (ASICs) and/or one or more
field programmable gate lists (FPGAs).
[0158] Data storage device 1102 and memory 1103 each include a
tangible non-transitory computer readable storage medium. Data
storage device 1102, and memory 1103, may each include high-speed
random access memory, such as dynamic random access memory (DRAM),
static random access memory (SRAM), double data rate synchronous
dynamic random access memory (DDR RAM), or other random access
solid state memory devices, and may include non-volatile memory,
such as one or more magnetic disk storage devices such as internal
hard disks and removable disks, magneto-optical disk storage
devices, optical disk storage devices, flash memory devices,
semiconductor memory devices, such as erasable programmable
read-only memory (EPROM), electrically erasable programmable
read-only memory (EEPROM), compact disc read-only memory (CD-ROM),
digital versatile disc read-only memory (DVD-ROM) disks, or other
non-volatile solid state storage devices.
[0159] Input/output devices 1105 may include peripherals, such as a
printer, scanner, display screen, etc. For example, input/output
devices 1105 may include a display device such as a cathode ray
tube (CRT) or liquid crystal display (LCD) monitor for displaying
information to the user, a keyboard, and a pointing device such as
a mouse or a trackball by which the user can provide input to
computer 1100.
[0160] Any or all of the systems and apparatus discussed herein,
including server 104, user device 106, display 220, memory 240,
processor 375, memory 325, font database 350, and components
thereof, may be implemented using a computer such as computer
1100.
[0161] One skilled in the art will recognize that an implementation
of an actual computer or computer system may have other structures
and may contain other components as well, and that FIG. 11 is a
high level representation of some of the components of such a
computer for illustrative purposes.
[0162] The foregoing Detailed Description is to be understood as
being in every respect illustrative and exemplary, but not
restrictive, and the scope of the invention disclosed herein is not
to be determined from the Detailed Description, but rather from the
claims as interpreted according to the full breadth permitted by
the patent laws. It is to be understood that the embodiments shown
and described herein are only illustrative of the principles of the
present invention and that various modifications may be implemented
by those skilled in the art without departing from the scope and
spirit of the invention. Those skilled in the art could implement
various other feature combinations without departing from the scope
and spirit of the invention.
* * * * *