Aspects of the present disclosure relate to the creation and distribution of reduced glyph font files.
Network documents such as webpages may use a variety of fonts to convey style and enhance aesthetics. In many instances, a web browser or user agent with which the network documents are viewed might not be equipped to view the documents because the corresponding font or fonts are not loaded in the system. Accordingly, the user agent or device on which the user agent is operating may need to obtain the font through a network. Some font files may be large and thus require significant bandwidth for transmission. Font files generally include definition information for all glyphs regardless of whether the glyph is used by a network document. This represents a waste of bandwidth since data is being transmitted to a user agent device when that data is not needed.
The following presents a simplified summary in order to provide a basic understanding of some aspects of the invention. The summary is not an extensive overview of the invention. It is neither intended to identify key or critical elements of the invention nor to delineate the scope of the invention. The following summary merely presents some concepts of the invention in a simplified form as a prelude to the description below.
Aspects of the disclosure relate to a font server that processes font requests by determining a user agent type (e.g., a browser type). Using the determined user agent type, the network server may retrieve and return the requested font in a font file format compatible with the determined user agent type. Thus, the page or document developer does not need to decide on a single font file format to reference for a particular font. Instead, the decision may be left to the font server so that all browser types may be supported.
According to another aspect, a font file may be referenced in a network document or a style sheet associated therewith using an identifier that is unique to a font or font family, but universal to all font file formats for that particular font or font family.
According to yet another aspect, a document creation application may be configured to generate a web document in addition to a corresponding style sheet for defining a layout and look of the web document. The application may further be configured to retrieve fonts or font identification information from a font server and to generate code fragments in the style sheet or web document referencing a selected font or font family.
According to yet another aspect, if a network server does not have a font file for a font or a font file in a compatible format, the network server may update its list of fonts or font files. If the font server is then able to find the font file, the server may redirect the request to a specified other font server or font location if the font file is not stored at that server. A compatible font file may then be transmitted to the requesting device from the other font server or through the original font server (i.e., acting as an intermediary).
According to still another aspect, a web developer may specify and a user agent may request a reduced glyph range for a particular font. This may be used to reduce the amount of bandwidth required to obtain the necessary information for viewing a network document published by the developer. The font server or a servlet associated therewith may evaluate the validity of the request and upon verifying that the request is valid, generate a font file for a requested font that includes only the request range of glyphs. A requested glyph range may be provided in the request. For example, the glyph range may be specified in the request string for an HTTP request.
Various objects, features, and advantages of the present invention will be more readily apparent and more fully understood from the following detailed description, taken in connection with the appended drawings, in which:
As described above, aspects of the disclosure relate to systems, apparatuses, methods, and computer-readable media for obtaining and processing fonts in an on-line web environment. A font, as used herein, may refer to a collection of characters in a typeface. In one or more examples, a font may refer to a set of all characters defined for that particular typeface. A user may upload a font file to a web server in a font file format that might only be compatible with one or more particular types of applications such as web browsers. Accordingly, the web server may generate a second font file in another font file format that is compatible with other types of applications and web browsers. Alternatively, the user may upload a font file in multiple font file formats rather than asking the web server to generate the font file in the other format. Using the web server, browsers may obtain the font file in the appropriate format. This allows users to use various styles and fonts in their webpages without having to customize pages to one type of browser or another.
According to one or more aspects, network server 105b may be configured to store font files. Font files may be created according to a variety of formats and thus, different types of browsers and applications may have different compatibilities with those formats. For example, fonts may be created according to TrueType, OpenType or Embedded OpenType formats. However, some web browsers such as MICROSOFT'S INTERNET EXPLORER might not be compatible with TrueType and OpenType font file formats, while other browsers might not be compatible with the Embedded OpenType font file format. To resolve such compatibility issues, network server 105b may store a font file in multiple formats to provide compatibility with multiple browser and application types. Upon receiving a font file request from one or more of devices 103, network server 105b may determine a browser or application type and choose a compatible format of the font file to send to the requesting device. This eliminates the need for the document author to decide which font file format to use and to sacrifice a segment of her potential audience due to incompatibility issues.
In step 325, the font server or a servlet thereof may receive a request for the font or font family corresponding to the received font file. In one example, the request may be structured according to an HTTP GET request that may include a user-agent request-header field that contains information about the user agent (i.e., browser or application requesting the information) originating the request. From the request, the font server or servlet may extract various parameters and other types of information in step 330 including identification information for the requested font or font family and a type of browser being used to access the page referencing the requested font or font family. For example, the font name and the browser application name may be specified in the HTTP GET headers. In step 335, the font server or servlet may determine the user agent being used to render the requested font. In step 340, the font server may then determine a compatible font file format for the user agent (e.g., a type of web browser) being used. For example, MICROSOFT INTERNET EXPLORER might only be compatible with the Embedded OpenType font file format. In one or more arrangements, browser type may also include or refer to a version of the browser. Once the compatible font file format is determined, the font server or servlet may retrieve the requested font or font family font file in the determined format and transmit it to the requesting device in step 345.
At some point after receiving the font file and prior to making the font file available for distribution, the font server may process the font file, for example, to reduce the glyph set of the font to those required by the web designer (or web document in which the font is referenced) and/or compressing the font data. In one example, the font file may be processed shortly after receiving the font file. In another example, the font file may be processed in response to receiving a request for the corresponding font. The font file may be reduce to include only those characters or symbols that are used in the web document using the font.
If, however, the server determines that the request is for a reduced glyph font file, the server may determine the desired glyph range in step 930. The glyph range may be specified in the HTTP request in one or more arrangements. As noted above, the glyph range may be defined in terms of Unicode values corresponding to the various glyphs. Once the desired range has been determined, the server may create a font file with only the desired glyph range in step 935. Such a reduced glyph font file may be created by copying the full font file and removing the glyph data for all undesired glyphs from the copy. Glyph data may include data (e.g., TrueType, Embedded OpenType or OpenType data) defining outlines for characters and symbols, bitmap information, character to glyph mapping tables and the like. Additionally or alternatively, other characteristics or aspects of a font may be removed in creating a reduced glyph font file; for example ligatures (a glyph that replaces two glyphs dynamically by a font renderer when certain glyphs are found side by side) may be removed if one of the glyphs is dynamically removed. Alternatively, the font server may create a reduced glyph font file and copy only the specified glyph data into the reduced glyph font file. In one or more arrangements, the font server may further consider the type of user agent that is being used and use a font file format that is compatible with the user agent type, as discussed herein. Once the reduced glyph font file has been created, it may be transmitted to the user agent for rendering of the associated network document (e.g., a web page) in step 940. In step 945, the reduced glyph font file may be cached in a font servlet (e.g., temporary memory storage) so that the reduced glyph font file may be served quickly to subsequent requesters. The reduced glyph font file may be stored in association with the address of the corresponding website for which the reduced glyph font file was created. Accordingly, when a subsequent request is received for a reduced glyph font file for the same website, the cached font file may be retrieved and provided to the requesting party.
According to one or more aspects, references to the location of fonts in a style sheet might not be a direct reference to a particular font file. Instead, the reference may be to an identifier unique to the font or font family. Using an identifier that is unique to the font or font family but not to a particular font file (and font file format), the font server is able to choose a compatible font file format for the requesting device and user. The identifier may be assigned by the font server or by some other entity.
The user agent determination module 603 may further be responsible for determining the font file format that is compatible with the determined user agent type. In one example, the user agent determination module 603 may examine a lookup table storing an association between format types and user agent types to identify compatible formats. Once the compatible format(s) have been determined, response generator 605 may be configured to retrieve the requested font in the determined font file format from database 601. A response including the font file may then be generated and transmitted to the requesting device by response generator 605.
Optionally, font server 600 may include a request redirector 609 that is configured to redirect font requests to another server if font server 600 does not have the requested font or a compatible font file stored (e.g., in font database 601). The redirector 609 may determine the location of a compatible font file or of a requested font using a lookup table that stores available fonts and font file formats in association with their locations. The redirector 609 may further be configured to receive a font file from the other server so that response generator 605 may generate a response to the requesting device. Alternatively, the redirector 609 may simply pass on a response already generated by the other server to the requesting device, thereby acting as a transmission intermediary. If the font server 600 is configured to receive the font file from the other server, the font server 600 may also store the font file in the font database 601 so that future requests need not be redirected. The modules described may include firmware, software, hardware and/or combinations thereof. In one or more arrangements, font server 600 may further include one or more processors (not shown), memory modules such as RAM and ROM to aid in the storage and execution of processing instructions.
The modules described may include firmware, software, hardware and/or combinations thereof. In one or more arrangements, font server 600 may further include one or more processors (not shown), memory modules such as RAM and ROM to aid in the storage and execution of processing instructions.
Once the servlet's internal list of fonts and font locations has been updated, the servlet may make another determination as to whether the requested font is available in step 720. If so, the servlet may redirect the request to the location corresponding to the requested font in step 725. Alternatively or additionally, the servlet may retrieve the requested font from the specified location. If, however, the font is still not available, the servlet may send a font request rejection to the requesting party or agent in step 730.
The same or similar retrieval systems, methodologies and apparatuses may be used for information types other than fonts. For example, images may be stored by an image server in multiple formats to insure compatibility with a requesting user agent. Thus, when a browser attempts to retrieve an image, an image server may determine the requesting user agent type, retrieve the image in a compatible image file format and return the image to the requesting device.
The methods and features recited herein may further be implemented through any number of computer readable media that are able to store computer readable instructions. Examples of computer readable media that may be used include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical disk storage, magnetic cassettes, magnetic tape, magnetic storage and the like.
Additionally or alternatively, in at least some embodiments, the methods and features recited herein may be implemented through one or more integrated circuits (ICs). An integrated circuit may, for example, be a microprocessor that accesses programming instructions or other data stored in a read only memory (ROM). In some such embodiments, the ROM stores programming instructions that cause the IC to perform operations according to one or more of the methods described herein. In at least some other embodiments, one or more of the methods described herein are hardwired into an IC. In other words, the IC is in such cases an application specific integrated circuit (ASIC) having gates and other logic dedicated to the calculations and other operations described herein. In still other embodiments, the IC may perform some operations based on execution of programming instructions read from ROM or RAM, with other operations hardwired into gates and other logic of IC. Further, the IC may output image data to a display buffer.
Although specific examples of carrying out various features have been described, those skilled in the art will appreciate that there are numerous variations and permutations of the above-described systems and methods that are contained within the spirit and scope of the disclosure as set forth in the appended claims. Additionally, numerous other embodiments, modifications and variations within the scope and spirit of the appended claims will occur to persons of ordinary skill in the art from a review of this disclosure.
Number | Name | Date | Kind |
---|---|---|---|
5444829 | Kawabata et al. | Aug 1995 | A |
5528742 | Moore et al. | Jun 1996 | A |
5533174 | Flowers, Jr. et al. | Jul 1996 | A |
5586242 | McQueen et al. | Dec 1996 | A |
5600770 | Kawabata et al. | Feb 1997 | A |
5671412 | Christiano | Sep 1997 | A |
5675718 | Miller | Oct 1997 | A |
5940581 | Lipton | Aug 1999 | A |
5963641 | Crandall et al. | Oct 1999 | A |
6065008 | Simon et al. | May 2000 | A |
6073148 | Rowe et al. | Jun 2000 | A |
6252671 | Peng et al. | Jun 2001 | B1 |
6323865 | Colletti | Nov 2001 | B1 |
6421055 | Jones et al. | Jul 2002 | B1 |
6426751 | Patel et al. | Jul 2002 | B1 |
6512531 | Gartland | Jan 2003 | B1 |
6687879 | Teshima | Feb 2004 | B1 |
6751726 | Dresevic et al. | Jun 2004 | B1 |
6826728 | Horiyama | Nov 2004 | B1 |
6853980 | Ying et al. | Feb 2005 | B1 |
6882344 | Hayes et al. | Apr 2005 | B1 |
6889202 | Johnson et al. | May 2005 | B2 |
6901427 | Teshima | May 2005 | B2 |
7010587 | Shiimori | Mar 2006 | B1 |
7492365 | Corbin et al. | Feb 2009 | B2 |
7539939 | Schomer | May 2009 | B1 |
7768513 | Klassen | Aug 2010 | B2 |
20020010725 | Mo | Jan 2002 | A1 |
20030014545 | Broussard et al. | Jan 2003 | A1 |
20030033286 | Burgess | Feb 2003 | A1 |
20030038958 | Salgado et al. | Feb 2003 | A1 |
20030095135 | Kaasila et al. | May 2003 | A1 |
20030131321 | Teshima | Jul 2003 | A1 |
20040017585 | Makishima et al. | Jan 2004 | A1 |
20040111375 | Johnson | Jun 2004 | A1 |
20040145760 | Kurumida | Jul 2004 | A1 |
20040177056 | Davis et al. | Sep 2004 | A1 |
20050149942 | Venkatraman et al. | Jul 2005 | A1 |
20050275656 | Corbin et al. | Dec 2005 | A1 |
20070024626 | Kagle et al. | Feb 2007 | A1 |
20080028304 | Levantovsky et al. | Jan 2008 | A1 |
20090259853 | Swildens et al. | Oct 2009 | A1 |
20100231598 | Hernandez et al. | Sep 2010 | A1 |
20100283786 | Opstad et al. | Nov 2010 | A1 |
Number | Date | Country |
---|---|---|
2498438 | Aug 2005 | CA |
1661590 | Aug 2005 | CN |
2316778 | Mar 1998 | GB |
H02058094 | Feb 1990 | JP |
200135606 | Dec 2001 | JP |
2003044470 | Feb 2003 | JP |
2004501442 | Jan 2004 | JP |
200726078 | Feb 2005 | JP |
2005215915 | Aug 2011 | JP |
2008013720 | Jan 2008 | WO |
Entry |
---|
“FontSync Introduction” by Apple Computer, Inc., published Dec. 4, 2000 (showing revisions back to Oct. 15, 1999). |
“Castle System End User License Agreement” found at http://home.earthlink.net/˜castlesys/font—license.html., copyright 1996. |
European Search Report for Application No. 10185361.2-1527 mailed Jan. 3, 2011. |
European Communication for Application No. 10185361.2-1527 mailed Jan. 7, 2013. |
Office Action off Japanese Application No. 2010-229734, mailed on Jan. 21, 2014. |
“Web Browser”, Yoichiro Akiyama, Journal of JAET: vol. 10, K.K. Kohbun Shuppan, Japan, Oct. 1, 2009. |
Office Action/Search Report from Chinese Application No. 201010506352.6, mailed Apr. 3, 2014. |
Number | Date | Country | |
---|---|---|---|
20110090230 A1 | Apr 2011 | US |