This specification relates generally to font substitution, and more particularly to methods for determining a font substitution hierarchy for web-based application documents.
Modern computer network applications are designed to be generally accessible. For example, the World Wide Web is accessible via the Internet through a variety of platform, browser and device combinations. However, due to portability, cost and other factors, the platform/browser/device combinations available to users for Web access can vary widely with regard to display and presentation capabilities.
Web-based application authors writing in a mark-up language (e.g., XML, HTML, XHTML) can specify document styling (i.e., the look and feel of documents), including display fonts to a network server, which may then determine a preferential hierarchy for which display fonts to use. For example, an author may include a list of primary fonts in a font request, and then specify a hierarchy of fallback fonts when particular primary fonts are not available. Standardized languages, including cascading style sheets, have been developed for streamlining the specification of document styling in mark-up language applications.
When the onus is on authors to specify document styling, however, fallback fonts are sometimes not specified in font requests. Further, even font requests that include fallback fonts may specify primary and fallback fonts that are not available for every type of platform/browser/device combination where a document might be presented. In such instances, a document may be presented with default or inaccurate fonts when primary fonts are not available for display. Default or inaccurate fonts are not optimal solutions, as they may degrade the user experience or render certain documents completely unusable.
An autonomous font substitution hierarchy manager can be constructed by mining font request files from a library of Web-based application documents, e.g., from the World Wide Web, associating font requests and font substitution hierarchy patterns within the font request files based on a clustering analysis, and determining a font substitution hierarchy for individual font requests based on the association.
In accordance with an embodiment, a method for determining a font substitution hierarchy is provided. A plurality of font request files associated with web-based application documents are identified. An association between a plurality of font requests within the plurality of font request files is determined based on a clustering analysis, and a font substitution hierarchy for an individual font request is determined based on the association.
In accordance with an embodiment, a plurality of font substitution strings are generated for the clustering analysis based on the plurality of font requests. The plurality of font substitution strings may be based on a hierarchical ordering of the plurality of font requests within the plurality of font request files, and a plurality of n-grams may be generated based on the plurality of font substitution strings.
In accordance with an embodiment, one of a hierarchical agglomerative clustering, k-means clustering or distributed exchange algorithm may be executed for the clustering analysis.
In accordance with an embodiment, a parameter associated with a secondary attribute of the plurality of font requests is determined, and an association between the plurality of font requests is determined based on the clustering analysis and the secondary attribute parameter. The secondary attribute of the plurality of font requests may be a stylistic attribute, contextual attribute or frequency attribute. A secondary attribute parameter associated with the frequency attribute may be determined based on a frequency of instances where two or more font requests appear in sequence in the plurality of font request files. A bias for one or more secondary attribute parameters associated with the frequency attribute may be determined based on a commonality between the plurality of font request files.
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.
In the exemplary embodiment of
Font substitution hierarchy manager 120 determines a font substitution hierarchy and provides font substitution services. For example, the font substitution hierarchy manager 120 may identify font request files 132 (i.e., files that include one or more font requests) associated with application documents 130 and determine an association between the font requests 134 within the font request files 132. The font substitution hierarchy manager 120 may then associate the font requests 134, such as by performing a clustering analysis, in order to determine a font substitution hierarchy for individual font requests that may be applied generally to application documents via communication system 100.
In one embodiment, clustering analysis module 200 identifies font requests 134 by indexing application documents 130 via network 110. For example, the clustering analysis module 200 may index application documents 130 by searching for application documents on the World Wide Web, and identifying the application documents 130 that contain font request files 132. Various font request file formats, such as cascading style sheets, include a font substitution hierarchy (e.g., a list of fallback font requests arranged in preferential order) when specified primary fonts are not available. For example, a font substitution hierarchy specifying a font-family of: “Times New Roman”, “Georgia” and “serif”, may direct the server to use the “Times New Roman” font if it is available, followed by “Georgia,” and, if Georgia is not available, any serif font that is available. Further, it has been observed that application document authors generally specify similar font substitution hierarchies in font request files 132 due to, for example, the widespread usage of standardized Web design software applications. Therefore, the font request data extracted from the font request files 132 can provide a sufficiently diverse font request file dataset to build groups of similar font requests. With an indexed subset of application documents 130 containing font request files 132, the module 200 may then determine an association between the font requests 134 within the font request files 132 based on a clustering analysis.
In one embodiment, the clustering analysis may include executing one or more unsupervised clustering algorithms to cluster font requests 134 into groups based on similarity criteria. The one or more clustering algorithms may be designed to create a clustered arrangement of font requests 134 such that the similarity between the font requests 134 is maximized within each group. The unsupervised clustering algorithms may include, but are not limited to, hierarchical agglomerative clustering, k-means clustering, distributed exchange algorithms, or the like. Further, it will be appreciated by those skilled in the art that various other clustering means may be employed and/or combined to cluster font requests 134 for the purposes of a clustering analysis as described herein.
Secondary attribute analysis module 210 determines an association between the font requests 134 within the font request files 132 based on additional attributes. A secondary attribute of the font requests might include any combination of stylistic, contextual, and frequency attributes. For example, a context attribute of the font requests might be that logos in application documents tend to use more stylized fonts than large blocks of text. A stylistic attribute of a particular font, e.g., nomenclature, font darkness, rounded edges vs. sharp edges, calligraphic fonts, monospace, fantasy and cursive fonts, etc., may be identified based on the fonts and font families that it is similar to, which can be used to improve the quality of the clustering analysis. Further, a frequency attribute may be based on a frequency of instances where two or more font requests appear in sequence in the font request files.
In operation, secondary attribute analysis module 210 determines one or more parameters associated with a secondary attribute of the font requests 134 as a further optimization of the clustering analysis. In one embodiment, the secondary attribute analysis module 220 also may determine that a large number of font request files have similar font hierarchy requests because the files were created using a common web design program (e.g., the font request files were autonomously created or the font requests were autonomously selected). For example, popular web design tools may offer default fallback font requests, which would be used more prevalently in the web pages developed with such tools. In such case, the secondary attribute analysis module 220 may account for skewing by biasing the analysis of such files before determining secondary attribute parameters.
In various embodiments, the method steps described herein, including the method steps described in
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.
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.
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, including one or more of the steps of
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, including one or more of the steps of
A high-level block diagram of an exemplary computer that may be used to implement systems, apparatus and methods described herein is illustrated in
Processor 701 may include both general and special purpose microprocessors, and may be the sole processor or one of multiple processors of computer 700. Processor 701 may include one or more central processing units (CPUs), for example. Processor 701, data storage device 702, and/or memory 703 may include, be supplemented by, or incorporated in, one or more application-specific integrated circuits (ASICs) and/or one or more field programmable gate arrays (FPGAs).
Data storage device 702 and memory 703 each include a tangible non-transitory computer readable storage medium. Data storage device 702, and memory 703, 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.
Input/output devices 705 may include peripherals, such as a printer, scanner, display screen, etc. For example, input/output devices 705 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 700.
Any or all of the systems and apparatus discussed herein, including font substitution hierarchy manager 120, and components thereof, including clustering analysis module 200, secondary attribute analysis module 210, memory 220, and API 230 may be implemented using a computer such as computer 700.
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
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 disclosure and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of this disclosure. Those skilled in the art could implement various other feature combinations without departing from the scope and spirit of this disclosure.
Number | Name | Date | Kind |
---|---|---|---|
5167013 | Hube et al. | Nov 1992 | A |
5825987 | Asada | Oct 1998 | A |
6041323 | Kubota | Mar 2000 | A |
7797631 | Yoshida | Sep 2010 | B2 |
20070171446 | Yamamoto et al. | Jul 2007 | A1 |
20080189600 | Lau et al. | Aug 2008 | A1 |
20090063517 | Wright et al. | Mar 2009 | A1 |
20100268713 | McCarthy et al. | Oct 2010 | A1 |
20110093565 | Bacus et al. | Apr 2011 | A1 |
20110184827 | Hubert | Jul 2011 | A1 |
20110289407 | Naik et al. | Nov 2011 | A1 |
20130047078 | Bever et al. | Feb 2013 | A1 |
20130127872 | Kaplan | May 2013 | A1 |