This description relates to advanced text editors, which may use scalable fonts.
In the ever-expanding connectivity and information sharing capabilities provided by computing devices, computer networks (e.g., the Internet) etc., various types of assets (e.g., electronic documents) such as web assets (e.g., websites, webpages, etc.) have been developed to assist with the transfer of information. Along with the almost explosive development of such assets, the content being presented by such assets has similarly grown. Text, audio, video, etc. is being incorporated into assets such as web assets to provide a more efficient and enjoyable viewing experience. For example, different languages, imagery, etc. may be included in assets to tailor content for characteristics of a viewer such as their geographical location. However, providing such rich content does not come without some constraints. For example, creating the content for such assets may appear difficult for developers unfamiliar with the variety of possible content and presentation styles.
The systems and techniques described here relate to content editing applications and tools (referred to as an editor in this disclosure) capable of supporting typographical features of an asset (e.g., an electronic document, a website, webpage, etc.) represented in a scalable font format (e.g., an OpenType font format). Along with presenting the supported typographical features for creating and adjusting asset content, suggestions may be provided by the editor to assist a user in becoming more versed in the variety of features. Being presented such suggestions, users can be introduced to the variety of features that otherwise may not have been utilized or even discovered. Further, needing minimal user interaction, such as only calling for a particular font and/or portion of content (e.g., a character, word, passage, etc.) to be selected, users can quickly experience the different types of features without undue burden. Along with presenting content with such features applied, other data may also be created by the editor, for example, instructions, data files, etc. may be produced for representing the created content in one or more assets (e.g., an electronic document, website, webpage, etc.).
In one aspect, a computer-implemented method includes receiving information that represents a font and a portion of textual content of an asset. The method also includes identifying one or more typographical features supported by a scalable font format that are capable of being applied to the portion of the textual content based upon the received information representing the font and the portion of textual content of the asset. The method also includes presenting, by a computing device, an exclusive set of selectable representations. Each of the selectable representations represents one of the one or more identified typographical features supported by the scalable font format for initiating application of the corresponding typographical feature to the textual content of the asset.
Implementations may include one or more of the following features. The font may be selected through interactions with an editor. The portion of textual content may be selected through interactions with an editor. The exclusive set of selectable representations may be visually highlighted. A portion of the editor may executed by the computing device. A portion of the editor may be executed remote from the computing device. A portion of the editor may be executed by the computing device and remote from the computing device. The one or more typographical features supported by a scalable font format may be OpenType compatible. The method may include producing one or more files that include instructions for representing the one or more typographical features supported by the scalable font format applied to the textual content. The method may include presenting another set of selectable representations, each representing a variant of one of the one or more identified typographical features supported by the scalable font format for selecting a particular variant of the corresponding typographical feature.
In another aspect, a system includes a computing device that includes a memory configured to store instructions. The computing device also includes a processor to execute the instructions to perform operations that include receiving information that represents a font and a portion of textual content of an asset. Operations also include identifying one or more typographical features supported by a scalable font format that are capable of being applied to the portion of the textual content based upon the received information representing the font and the portion of textual content of the asset. Operations also include presenting, by the computing device, an exclusive set of selectable representations. Each of the selectable representations represents one of the one or more identified typographical features supported by the scalable font format for initiating application of the corresponding typographical feature to the textual content of the asset.
Implementations may include one or more of the following features. The font may be selected through interactions with an editor. The portion of textual content may be selected through interactions with an editor. The exclusive set of selectable representations may be visually highlighted. A portion of the editor may executed by the computing device. A portion of the editor may be executed remote from the computing device. A portion of the editor may be executed by the computing device and remote from the computing device. The one or more typographical features supported by a scalable font format may be OpenType compatible. The processor may execute instructions to perform operations that include producing one or more files that include instructions for representing the one or more typographical features supported by the scalable font format applied to the textual content. The processor may execute instructions to perform operations that include presenting another set of selectable representations, each representing a variant of one of the one or more identified typographical features supported by the scalable font format for selecting a particular variant of the corresponding typographical feature.
In another aspect, one or more computer readable media storing instructions that are executable by a processing device, and upon such execution cause the processing device to perform operations that include receiving information that represents a font and a portion of textual content of an asset. Operations also include identifying one or more typographical features supported by a scalable font format that are capable of being applied to the portion of the textual content based upon the received information representing the font and the portion of textual content of the asset. Operations also include presenting, by a computing device, an exclusive set of selectable representations. Each of the selectable representations represents one of the one or more identified typographical features supported by the scalable font format for initiating application of the corresponding typographical feature to the textual content of the asset.
Implementations may include one or more of the following features. The font may be selected through interactions with an editor. The portion of textual content may be selected through interactions with an editor. The exclusive set of selectable representations may be visually highlighted. A portion of the editor may executed by the computing device. A portion of the editor may be executed remote from the computing device. A portion of the editor may be executed by the computing device and remote from the computing device. The one or more typographical features supported by a scalable font format may be OpenType compatible. Execution may cause the processing device to perform operations that include producing one or more files that include instructions for representing the one or more typographical features supported by the scalable font format applied to the textual content. Execution may cause the processing device to perform operations that include presenting another set of selectable representations, each representing a variant of one of the one or more identified typographical features supported by the scalable font format for selecting a particular variant of the corresponding typographical feature.
These and other aspects and features and various combinations of them may be expressed as methods, apparatus, systems, means for performing functions, program products, and in other ways.
Other features and advantages will be apparent from the description and the claims.
Referring to
Some computing devices, operating systems and software applications may or may not be capable of supporting advanced typographical features for scalable computer fonts. In this illustrated example, a computing device 100 (e.g., computer system) is executing an asset presenter 102 (e.g., an application, a web browser, etc.) to present content (e.g., an electronic document, a web page, a website, etc.) locally created or provided from one or more sources (e.g., a stored filed, transmitted over the Internet, etc.). In this situation, the asset presenter 102 does support OpenType fonts and is able to present content using typographical features provided by OpenType fonts. For example, a single character of the ligature “fi” 104 is presented on a display 106 of the computing device 100 rather than being presented as two individual characters “f” and “i”. Prior to being presented, the ligature “fi” 104 is created to appear as a single character. For example, an editor may be executed, accessed, etc. by the computing device 100 for creating such a content presentation. However, users of such computing devices may not be very familiar with the use of ligatures and other types of typographical features and lack experience in using such features along with the basic look and feel of the features. Additionally, along with using such features for creating content (e.g., text), incorporating such rich content by adjusting such assets (e.g., electronic documents, webpages, websites, etc.) may prove difficult for users lacking expertise.
Referring to
As mentioned, such advanced editors may be implemented as a stand-alone application (e.g., for assisting with the production of products such as e-books), implemented by using one or more networks (e.g., for providing a cloud-based application), etc. Software agent technology may also be utilized. In some arrangements the scalable font editor 108 may operate with the assistance of one or more software agents resident at the computing device 100. For example, the scalable font editor 108 may be presented through an application (e.g., a web browser) that may or may not support OpenType fonts and one or more software agents may provide information to the site where the scalable font editor 108 is executed (e.g., a remotely located font service provider). Such agents can be considered as a software module that may be executable in a substantially autonomous manner. Implementations of such software agents may utilize the systems and techniques described in U.S. patent application Ser. No. 13/672,992, entitled “Supporting Scalable Fonts” and filed 9 Nov. 2012, the entirety of which is incorporated by reference herein.
Referring to
In this particular example, upon determining the OpenType features supported by the selected font (shown in field 302), a group of graphical icons 304 are presented on the user interface 300 to represent the supported features. Graphical icons that represent unsupported features are generally hidden and not presented on the user interface. As such, only a set of icons that correspond to supported features are exclusively presented for user selection. In this particular example, twelve icons are included in the group of icons 304, however more or less icons may be presented based upon the selected font. The user interface 300 also includes a pane 306 for textual content to be entered (e.g., by a user) for potentially applying one or more of the OpenType features supported by the selected font. For illustration, a string of text (i.e., “The quick brown fox jumps over the lazy dog. ½ ¾”) is presented in the user-entry pane 306. To present features being applied to the entered text, the user interface 300 also includes a preview pane 308. Continuing with the illustrated example, the string of text entered into field 306 is presented in the selected font in the preview pane 308 (i.e., in the font “Avenir Next W04 Bold”). In this illustrated example, none of the icons included in the group of icons 304 have been selected for applying a font feature to the user-entered text (shown in pane 306). However, if one or more of the icons is selected, corresponding features would be applied to the text of pane 306 and the resulting text would be presented in preview pane 308.
Similar to using a selected font to identify potentially applicable OpenType features, other types of information may be used for identifying the features. For example, the textual content (to which features may be applied) may be used for feature identification. By reviewing the content from particular characters, character combinations, etc., potential OpenType features may be identified. For example, detecting the character “f” followed by the character “i”, the editor (e.g., the scalable font editor 108) may determine that a single-character ligature “fi” may be present and an OpenType ligature feature could potentially be applied to the text. In some arrangements, combinations of information may be used for feature identification. For example, both the selected font and content of the text may be used for identifying OpenType features that may be applied to the text.
Once the textual content is being presented (e.g., in preview pane 308) with a desired visual effect (e.g., one or more OpenType features are applied), one or more representations of the content may be produced. In one arrangement, code may be produced upon the user selecting a button 310 (e.g., labeled “View Code”) included in the user interface 300. Such generated code may be provided in one or more formats, for example, code may be provided in a hypertext markup language (HTML) that includes instructions for presenting the textual content with the applied OpenType font features (as shown in preview pane 308). Code may also be provided for a cascading style sheet (CSS) that provides presentation semantics for the textual content (e.g., provided by HTML). For instances in which multiple OpenType font features are applied, files may be produced for each applied feature. For example, an HTML, CSS, Javascript file, etc. may be produced for each applied feature. Along with providing possible OpenType font features to apply to text based on a selected font, other information may be used for determining which features may possibly be applied to textual content. For example, a selected portion of text may be used in the feature determination.
Referring to
In this illustrated example, a selected font (e.g., “Avenir Next W04 Bold”) was used to initially determine which OpenType font features would be available for being applied to text. Once a portion of the text was selected (e.g., the word “dog”), a subset of the available OpenType font features is identified from the previously identified font features. In some arrangements, font selection and textual content may be used in concert to identifying OpenType features. For example, particular features may be identified based upon the selected font and characters, combinations of characters (e.g., ligatures), etc. present in selected text. Similarly, entered text (e.g., entered into the pane 306) may be utilized for identifying OpenType features. Application of such features may be reversed through operations with the user interface 300. For example, by de-selecting a selected icon (e.g., de-select the icon highlighted by dashed box 402), the corresponding OpenType feature may be removed from the selection (e.g., the selected word “dog”). Multiple features may also be applied, for example, after selecting the icon to apply one feature (e.g., select the icon highlighted by dashed box 402) another icon may be selected (e.g., the icon highlighted by dashed box 404) to apply a second feature (e.g., superscripting the characters of the selected text).
Referring to
Along with providing suggestions that use selected text (e.g., the term “dog”), other type of information may be provide by the interface 300 based on the available OpenType features. Available features may be tailored based upon selecting from options presented on the interface 300. In one arrangement, multiple variants may be associated with a particular OpenType feature and the interface 300 may assist the user with selecting one of the variants for applying the feature. For example, multiple graphical selections may be presented by the interface 300 that represent different shapes for a typographical flourish (known as a swash). By selecting one of the presented shapes, the user indicates which shape should be used when a swash OpenType feature is applied. Similar to applying the features, application of a feature may be removed by de-selecting the corresponding button (e.g., deselecting button 506 removes the superscripting feature from the representation presented in preview pane 308). In some arrangements, a button 510 may be provided for clearing the preview pane 308. As described with respect to
Referring to
Operations of the scalable font editor may include receiving 602 information that represents a font and a portion of textual content of an asset. For example, through a user interface a selection may be made that indicates a particular font and a portion of text (e.g., a character, word, passage, etc.) included in an asset (e.g., an electronic document, a website, a web page, etc.). Selections may include other information, other combinations of selections associated with the textual content of an asset, etc. Operations also include identifying 604 one or more typographical features supported by a scalable font format that are capable of being applied to the portion of the textual content based upon the received information representing the font and the portion of textual content of the asset. For example, based upon the selected font and text, one or more OpenType features may be identified that can potentially be applied to the text. For example, particular characters in the text (e.g., an “f” followed by and “i”) can indicate that a ligature may be present in the text and a ligature OpenType feature should be identified and made available for presenting the text. Similar, based upon the selected font, one or more OpenType features can be identified. Operations may also include presenting 606, by a computing device, an exclusive set of selectable representations. Each of the selectable representations represents one of the one or more identified typographical features supported by the scalable font format for initiating application of the corresponding typographical feature to the textual content of the asset. For example, once the OpenType features are identified based upon the selected font and selected text, a group of selectable icons may be presented that represent each of the identified features. The selectable icons may be exclusive to only represent the OpenType features that are available for application to the text of the asset. As such, the user would not be distracted or confused by icons that represent other OpenType features that are not available for application to the text of the asset.
The system 700 may provide scalable stores for storing data resources. The client device 702 may upload data resources to the hosted storage service 720 and control access to the uploaded data resources. Access control may include a range of sharing levels (e.g., private, shared with one or more individuals, shared with one or more groups, public, etc.). Data stored in hosted storage service 720 can be secured from unauthorized access. The hosted storage service 720 can use a simple and consistent application programming interface, or API, which can allow arbitrary quantities of structured or unstructured data to be kept private or shared between individuals, organizations, or with the world at large. The client device 702 may access, retrieve, be provided, store, etc. data in the hosted storage service 720 for any number of a variety of reasons. For example, data may be stored for business reasons (e.g., provide identification information to attain access clearance for OpenType font features at the hosted storage service 720), or for use in data processing by other services.
The client device 702 may be implemented using a computing device, such as the computing device 800 or the mobile device 850 described with respect to
The hosted storage service 720 may be implemented such that client applications executing on client device 702, such as a client application 703, may store, retrieve, or otherwise manipulate data resources in the hosted storage service 720. The hosted storage service 720 may be implemented by one or more server devices, which may be implemented using a computing device, such as the computing device 800 or mobile device 850 described with respect to
The hosted storage service 720 generally includes an interface frontend 706, an interface backend 708, a storage backend 710, and metadata 716 for resources stored in the storage backend 710. The hosted storage service 720 may also include an authenticator 709 to verify that a user requesting one or more fonts should be provided access to the fonts (e.g., based on a service subscription, rental period, etc.).
In general, the interface frontend 706 may receive requests from and send responses to the client device 702. For instance, the hosted storage service 720 may be implemented as a Web Service with a corresponding set of Web Service Application Programming Interfaces (APIs). The Web Service APIs may be implemented, for example, as a Representational State Transfer (REST)-based HTTP interface or a Simple Object Access Protocol (SOAP)-based interface. Interface frontend 706 may receive messages from the client 702 and parse the requests into a format usable by the hosted storage service 720, such as a remote procedure call (RPC) to an interface backend 708. The interface frontend 706 may write responses generated by the hosted storage service 720 for transmission to the client 702. In some implementations, multiple interface frontends 706 may be implemented, for example to support multiple access protocols.
The interface frontend 706 may include a graphical front end, for example to display on a web browser for data access. The interface frontend 706 may include a sub-system to enable managed uploads and downloads of large files. The interface frontend 706 may monitor load information and update logs, for example to track and protect against denial of service (DOS) attacks.
A data resource may be accessed by one or more techniques such as uniquely naming the resource with a uniform resource identifier (URI), which allows the client application 703 and service 720 to exchange with the resource using a set of operations. For example, requested actions may be represented as verbs, such as by HTTP GET, PUT, POST, HEAD, and DELETE verbs. The GET verb may be used to retrieve a resource, while the HEAD verb may be used to retrieve information about a resource without retrieving the resource itself. The DELETE verb may be used to delete a resource from the hosted storage service 720. The PUT and POST verbs may be used to upload a resource to the service 720. PUT requests may come from the client 702 and contain authentication and authorization credentials and resource metadata in a header, such as an HTTP header. POST requests may be received when a client 702 wants to upload from a web browser form. The form POST upload protocol for the hosted storage service 720 may involve multiple form fields to provide authentication, authorization, and resource metadata. More generally, any of the API requests may include credentials for authentication and authorization, for example in a header of the request. An authorization header may be included in the REST requests, which may include an access key to identify the entity sending the request.
Alternatively, or additionally, a user may be authenticated based on stored credentials, which may be appended to the API requests. If no valid credential is present, a redirect to an authentication frontend may be generated, and the authentication frontend may be used to validate. The authentication frontend may be used by systems and services in addition to the hosted storage service 720 (e.g., if the organization operating the hosted storage service 720 also operates other web services such as email service). A user may also or alternatively be authenticated based on authentication credentials from an external credentialing service or an external service that includes credentialing functionality. User or group identifier information may be calculated from the external service's credential information. Requests sent by the client 702 to the interface frontend 706 may be translated and forwarded to the external service for authentication.
In general, resources stored in the hosted storage service 720 may be referenced by resource identifiers. The hosted storage service 720 may define namespaces to which a valid resource identifier must conform.
Resources (e.g., objects such as font data) may be stored in hosted storage service 720 in buckets. In some examples, each bucket is uniquely named in the hosted storage service 720, each data resource is uniquely named in a bucket, and every bucket and data resource combination is unique. Data resources may be uniquely identified by a URI that includes the bucket name and the resource name, and identifies the hosted storage service 720.
The interface backend 708 along with the authenticator 709 may handle request authentication and authorization, may manage data and metadata, and may track activity such as for billing. As one example, the interface backend 708 may query the authenticator 709 when a request for one or more fonts, font features, etc. is received. The interface backend 708 may also provide additional or alternative functionality. For example, the interface backend 708 may provide functionality for independent frontend/backend scaling for resource utilization and responsiveness under localized heavy loads. Data management may be encapsulated in the interface backend 708 while communication serving may be encapsulated in the interface frontend 706. The interface backend 708 may isolate certain security mechanisms from the client-facing interface frontend 706.
The interface backend 708 may expose an interface usable by both the interface frontend 706 and other systems. In some examples, some features of the interface backend 708 are accessible only by an interface frontend (not shown) used by the owners of the hosted storage service 720 (internal users). Such features may include those needed for administrative tasks (e.g., resolving a resource reference). The interface backend 708 may handle request authentication (e.g., ensuring a user's credentials are valid) and authorization (e.g., verifying that a requested operation is permitted). The interface backend may also provide encryption and decryption services to prevent unauthorized access to data, even by internal users.
The interface backend 708 may manage metadata 716 associated with data resources, for example in a MySQL database. User-specified names labeling the buckets can be completely defined within the metadata 716, and resource metadata 716 can map a resource name to one or more datastores 712 storing the resource. The metadata 716 can also contain bucket and resource creation times, resource sizes, hashes, and access control lists 718 (ACL 718) for both buckets and resources. The interface backend 708 can log activity and track storage consumption (e.g., for accounting support).
The ACLs 718 may generally define who is authorized to perform actions on corresponding buckets or resources, and the nature of the permitted actions. The ACLs 718 may be an unordered list of {scope, role} pairs, plus Boolean flags. The scope may define a user or group of users and the role may define the access permissions for the user or group. In some examples, the union of all {scope, role} pairs may define access rights. In some examples, more specific {scope, role} pairs override more general ones.
The storage backend 710 may contain multiple datastores 712a-712c. Although three datastores 712 are shown, more or fewer are possible. Each of the datastores 712a-712c may store data resources 714a-714c in a particular format. For example, data store 712a may store a data resource 714a as a Binary Large Object (BLOB), data store 712b may store a data resource 714b in a distributed file system (e.g., Network File System), and data store 712c may store a data resource 714c in a database (e.g., MySQL).
Computing device 800 includes processor 802, memory 804, storage device 806, high-speed controller 808 connecting to memory 804 and high-speed expansion ports 810, and low speed controller 812 connecting to low speed expansion port 814 and storage device 806. Each of components 802, 804, 806, 808, 810, and 812, are interconnected using various busses, and can be mounted on a common motherboard or in other manners as appropriate. Processor 802 can process instructions for execution within computing device 800, including instructions stored in memory 804 or on storage device 806 to display graphical data for a GUI on an external input/output device, including, e.g., display 816 coupled to high speed interface 808. In other implementations, multiple processors and/or multiple buses can be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 800 can be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
Memory 804 stores data within computing device 800. In one implementation, memory 804 is a volatile memory unit or units. In another implementation, memory 804 is a non-volatile memory unit or units. Memory 804 also can be another form of computer-readable medium, including, e.g., a magnetic or optical disk.
Storage device 806 is capable of providing mass storage for computing device 800. In one implementation, storage device 806 can be or contain a computer-readable medium, including, e.g., a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in a data carrier. The computer program product also can contain instructions that, when executed, perform one or more methods, including, e.g., those described above. The data carrier is a computer- or machine-readable medium, including, e.g., memory 804, storage device 806, memory on processor 802, and the like.
High-speed controller 808 manages bandwidth-intensive operations for computing device 800, while low speed controller 812 manages lower bandwidth-intensive operations. Such allocation of functions is an example only. In one implementation, high-speed controller 808 is coupled to memory 804, display 816 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 810, which can accept various expansion cards (not shown). In the implementation, low-speed controller 812 is coupled to storage device 806 and low-speed expansion port 814. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth®, Ethernet, wireless Ethernet), can be coupled to one or more input/output devices, including, e.g., a keyboard, a pointing device, a scanner, or a networking device including, e.g., a switch or router, e.g., through a network adapter.
Computing device 800 can be implemented in a number of different forms, as shown in the figure. For example, it can be implemented as standard server 820, or multiple times in a group of such servers. It also can be implemented as part of rack server system 824. In addition or as an alternative, it can be implemented in a personal computer including, e.g., laptop computer 822. In some examples, components from computing device 800 can be combined with other components in a mobile device (not shown), including, e.g., device 850. Each of such devices can contain one or more of computing device 800, 850, and an entire system can be made up of multiple computing devices 800, 850 communicating with each other.
Computing device 850 includes processor 852, memory 864, an input/output device including, e.g., display 854, communication interface 866, and transceiver 868, among other components. Device 850 also can be provided with a storage device, including, e.g., a microdrive or other device, to provide additional storage. Each of components 850, 852, 864, 854, 866, and 868, are interconnected using various buses, and several of the components can be mounted on a common motherboard or in other manners as appropriate.
Processor 852 can execute instructions within computing device 850, including instructions stored in memory 864. The processor can be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor can provide, for example, for coordination of the other components of device 850, including, e.g., control of user interfaces, applications run by device 850, and wireless communication by device 850.
Processor 852 can communicate with a user through control interface 858 and display interface 856 coupled to display 854. Display 854 can be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. Display interface 856 can comprise appropriate circuitry for driving display 854 to present graphical and other data to a user. Control interface 858 can receive commands from a user and convert them for submission to processor 852. In addition, external interface 862 can communicate with processor 842, so as to enable near area communication of device 850 with other devices. External interface 862 can provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces also can be used.
Memory 864 stores data within computing device 850. Memory 864 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory 874 also can be provided and connected to device 850 through expansion interface 872, which can include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory 874 can provide extra storage space for device 850, or also can store applications or other data for device 850. Specifically, expansion memory 874 can include instructions to carry out or supplement the processes described above, and can include secure data also. Thus, for example, expansion memory 874 can be provided as a security module for device 850, and can be programmed with instructions that permit secure use of device 850. In addition, secure applications can be provided through the SIMM cards, along with additional data, including, e.g., placing identifying data on the SIMM card in a non-hackable manner.
The memory can include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in a data carrier. The computer program product contains instructions that, when executed, perform one or more methods, including, e.g., those described above. The data carrier is a computer- or machine-readable medium, including, e.g., memory 864, expansion memory 874, and/or memory on processor 852, which can be received, for example, over transceiver 868 or external interface 862.
Device 850 can communicate wirelessly through communication interface 866, which can include digital signal processing circuitry where necessary. Communication interface 866 can provide for communications under various modes or protocols, including, e.g., GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication can occur, for example, through radio-frequency transceiver 868. In addition, short-range communication can occur, including, e.g., using a Bluetooth®, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 870 can provide additional navigation- and location-related wireless data to device 850, which can be used as appropriate by applications running on device 850. Sensors and modules such as cameras, microphones, compasses, accelerators (for orientation sensing), etc. maybe included in the device.
Device 850 also can communicate audibly using audio codec 860, which can receive spoken data from a user and convert it to usable digital data. Audio codec 860 can likewise generate audible sound for a user, including, e.g., through a speaker, e.g., in a handset of device 850. Such sound can include sound from voice telephone calls, can include recorded sound (e.g., voice messages, music files, and the like) and also can include sound generated by applications operating on device 850.
Computing device 850 can be implemented in a number of different forms, as shown in the figure. For example, it can be implemented as cellular telephone 880. It also can be implemented as part of smartphone 882, personal digital assistant, or other similar mobile device.
Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms machine-readable medium and computer-readable medium refer to a computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions.
To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying data to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be a form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in a form, including acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or a combination of such back end, middleware, or front end components. The components of the system can be interconnected by a form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
In some implementations, the engines described herein can be separated, combined or incorporated into a single or combined engine. The engines depicted in the figures are not intended to limit the systems described here to the software architectures shown in the figures.
A number of embodiments have been described. Nevertheless, it will be understood that various modifications can be made without departing from the spirit and scope of the processes and techniques described herein. In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps can be provided, or steps can be eliminated, from the described flows, and other components can be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims.
This application claims priority under 35 USC §119(e) to U.S. Patent Application Ser. No. 61/750,616, filed on Jan. 9, 2013, the entire contents of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4244657 | Wasylyk | Jan 1981 | A |
4998210 | Kadono | Mar 1991 | A |
5347266 | Bauman et al. | Sep 1994 | A |
5412771 | Fenwick | May 1995 | A |
5416898 | Opstad et al. | May 1995 | A |
5444829 | Kawabata et al. | Aug 1995 | A |
5453938 | Gohara et al. | Sep 1995 | A |
5526477 | McConnell et al. | Jun 1996 | A |
5528742 | Moore et al. | Jun 1996 | A |
5533174 | Flowers et al. | Jul 1996 | A |
5586242 | McQueen et al. | Dec 1996 | A |
5606649 | Tai | Feb 1997 | A |
5619721 | Maruko | Apr 1997 | A |
5630028 | DeMeo | May 1997 | A |
5737599 | Rowe et al. | Apr 1998 | A |
5748975 | Van De Vanter | May 1998 | A |
5757384 | Ikeda | May 1998 | A |
5781714 | Collins et al. | Jul 1998 | A |
5877776 | Beaman et al. | Mar 1999 | A |
5940581 | Lipton | Aug 1999 | A |
5995718 | Hiraike | Nov 1999 | A |
6012071 | Krishna et al. | Jan 2000 | A |
6016142 | Chang | Jan 2000 | A |
6031549 | Hayes-Roth | Feb 2000 | A |
6044205 | Reed et al. | Mar 2000 | A |
6065008 | Simon et al. | May 2000 | A |
6073147 | Chan et al. | Jun 2000 | A |
6111654 | Cartier | Aug 2000 | A |
6141002 | Kanungo et al. | Oct 2000 | A |
6249908 | Stamm | Jun 2001 | B1 |
6252671 | Peng et al. | Jun 2001 | B1 |
6282327 | Betrisey | Aug 2001 | B1 |
6313920 | Dresevic et al. | Nov 2001 | B1 |
6320587 | Funyu | Nov 2001 | B1 |
6330577 | Kim | Dec 2001 | B1 |
6343301 | Halt et al. | Jan 2002 | B1 |
6426751 | Patel | Jul 2002 | B1 |
6490051 | Nguyen et al. | Dec 2002 | B1 |
6512531 | Gartland | Jan 2003 | B1 |
6522330 | Kobayashi | Feb 2003 | B2 |
6522347 | Tsuji | Feb 2003 | B1 |
6583789 | Carlson et al. | Jun 2003 | B1 |
6657625 | Chik et al. | Dec 2003 | B1 |
6675358 | Kido | Jan 2004 | B1 |
6678688 | Unruh | Jan 2004 | B1 |
6687879 | Teshima | Feb 2004 | B1 |
6704116 | Abulhab | Mar 2004 | B1 |
6704648 | Naik et al. | Mar 2004 | B1 |
6718519 | Taieb | Apr 2004 | B1 |
6738526 | Betrisey | May 2004 | B1 |
6754875 | Paradies | Jun 2004 | B1 |
6760029 | Phinney et al. | Jul 2004 | B1 |
6771267 | Muller | Aug 2004 | B1 |
6810504 | Cooper et al. | Oct 2004 | B2 |
6813747 | Taieb | Nov 2004 | B1 |
6853980 | Ying et al. | Feb 2005 | B1 |
6856317 | Konsella et al. | Feb 2005 | B2 |
6882344 | Hayes et al. | Apr 2005 | B1 |
6901427 | Teshima | May 2005 | B2 |
6907444 | Narasimhan et al. | Jun 2005 | B2 |
6952210 | Renner et al. | Oct 2005 | B1 |
6993538 | Gray | Jan 2006 | B2 |
7050079 | Estrada et al. | May 2006 | B1 |
7064757 | Opstad et al. | Jun 2006 | B1 |
7064758 | Chik et al. | Jun 2006 | B2 |
7155672 | Adler et al. | Dec 2006 | B1 |
7184046 | Hawkins | Feb 2007 | B1 |
7188313 | Hughes et al. | Mar 2007 | B2 |
7228501 | Brown et al. | Jun 2007 | B2 |
7346845 | Teshima et al. | Mar 2008 | B2 |
7477988 | Dorum | Jan 2009 | B2 |
7492365 | Corbin et al. | Feb 2009 | B2 |
7505040 | Stamm et al. | Mar 2009 | B2 |
7539939 | Schomer | May 2009 | B1 |
7552008 | Newstrom et al. | Jun 2009 | B2 |
7580038 | Chik et al. | Aug 2009 | B2 |
7583397 | Smith | Sep 2009 | B2 |
7636885 | Merz et al. | Dec 2009 | B2 |
7701458 | Sahuc et al. | Apr 2010 | B2 |
7752222 | Cierniak | Jul 2010 | B1 |
7768513 | Klassen | Aug 2010 | B2 |
7836094 | Ornstein et al. | Nov 2010 | B2 |
7882432 | Nishikawa et al. | Feb 2011 | B2 |
7937658 | Lunde | May 2011 | B1 |
7944447 | Clegg et al. | May 2011 | B2 |
7958448 | Fattic et al. | Jun 2011 | B2 |
8098250 | Clegg et al. | Jan 2012 | B2 |
8116791 | Agiv | Feb 2012 | B2 |
8201088 | Levantovsky et al. | Jun 2012 | B2 |
8201093 | Tuli | Jun 2012 | B2 |
8306356 | Bever | Nov 2012 | B1 |
8381115 | Tranchant et al. | Feb 2013 | B2 |
8413051 | Bacus et al. | Apr 2013 | B2 |
8601374 | Parham | Dec 2013 | B2 |
8643652 | Kaplan | Feb 2014 | B2 |
8644810 | Boyle | Feb 2014 | B1 |
8689101 | Fux et al. | Apr 2014 | B2 |
8731905 | Tsang | May 2014 | B1 |
20010052901 | Kawabata et al. | Dec 2001 | A1 |
20020010725 | Mo | Jan 2002 | A1 |
20020033824 | Stamm | Mar 2002 | A1 |
20020052916 | Kloba et al. | May 2002 | A1 |
20020057853 | Usami | May 2002 | A1 |
20020087702 | Mori | Jul 2002 | A1 |
20020093506 | Hobson | Jul 2002 | A1 |
20020174186 | Hashimoto et al. | Nov 2002 | A1 |
20020194261 | Teshima | Dec 2002 | A1 |
20030014545 | Broussard et al. | Jan 2003 | A1 |
20030076350 | Vu | Apr 2003 | A1 |
20030197698 | Perry et al. | Oct 2003 | A1 |
20040025118 | Renner | Feb 2004 | A1 |
20040088657 | Brown | May 2004 | A1 |
20040119714 | Everett et al. | Jun 2004 | A1 |
20040177056 | Davis et al. | Sep 2004 | A1 |
20040189643 | Frisken et al. | Sep 2004 | A1 |
20040207627 | Konsella et al. | Oct 2004 | A1 |
20040233198 | Kubo | Nov 2004 | A1 |
20050033814 | Ota | Feb 2005 | A1 |
20050094173 | Engelman et al. | May 2005 | A1 |
20050111045 | Imai | May 2005 | A1 |
20050128508 | Greef et al. | Jun 2005 | A1 |
20050149942 | Venkatraman | Jul 2005 | A1 |
20050190186 | Klassen | Sep 2005 | A1 |
20050193336 | Fux et al. | Sep 2005 | A1 |
20050200871 | Miyata | Sep 2005 | A1 |
20050264570 | Stamm | Dec 2005 | A1 |
20050270553 | Kawara | Dec 2005 | A1 |
20050275656 | Corbin et al. | Dec 2005 | A1 |
20060010371 | Shur et al. | Jan 2006 | A1 |
20060017731 | Matskewich et al. | Jan 2006 | A1 |
20060061790 | Miura | Mar 2006 | A1 |
20060072136 | Hodder et al. | Apr 2006 | A1 |
20060072137 | Nishikawa et al. | Apr 2006 | A1 |
20060072162 | Nakamura | Apr 2006 | A1 |
20060103653 | Chik et al. | May 2006 | A1 |
20060103654 | Chik et al. | May 2006 | A1 |
20060168639 | Gan | Jul 2006 | A1 |
20060241861 | Takashima | Oct 2006 | A1 |
20060245727 | Nakano et al. | Nov 2006 | A1 |
20060267986 | Bae et al. | Nov 2006 | A1 |
20060269137 | Evans | Nov 2006 | A1 |
20060285138 | Merz et al. | Dec 2006 | A1 |
20070002016 | Cho et al. | Jan 2007 | A1 |
20070006076 | Cheng | Jan 2007 | A1 |
20070008309 | Sahuc et al. | Jan 2007 | A1 |
20070050419 | Weyl et al. | Mar 2007 | A1 |
20070055931 | Zaima | Mar 2007 | A1 |
20070139412 | Stamm | Jun 2007 | A1 |
20070139413 | Stamm et al. | Jun 2007 | A1 |
20070159646 | Adelberg et al. | Jul 2007 | A1 |
20070172199 | Kobayashi | Jul 2007 | A1 |
20070211062 | Engelman | Sep 2007 | A1 |
20070283047 | Theis et al. | Dec 2007 | A1 |
20080028304 | Levantovsky et al. | Jan 2008 | A1 |
20080030502 | Chapman | Feb 2008 | A1 |
20080154911 | Cheng | Jun 2008 | A1 |
20080282186 | Basavaraju | Nov 2008 | A1 |
20080303822 | Taylor | Dec 2008 | A1 |
20080306916 | Gonzalez et al. | Dec 2008 | A1 |
20090031220 | Tranchant | Jan 2009 | A1 |
20090063964 | Huang | Mar 2009 | A1 |
20090119678 | Shih | May 2009 | A1 |
20090158134 | Wang | Jun 2009 | A1 |
20090183069 | Duggan | Jul 2009 | A1 |
20090275351 | Jeung et al. | Nov 2009 | A1 |
20090287998 | Kalra | Nov 2009 | A1 |
20090303241 | Priyadarshi et al. | Dec 2009 | A1 |
20090307585 | Tranchant et al. | Dec 2009 | A1 |
20100014104 | Soord | Jan 2010 | A1 |
20100088606 | Kanno | Apr 2010 | A1 |
20100088694 | Peng | Apr 2010 | A1 |
20100091024 | Myadam | Apr 2010 | A1 |
20100115454 | Tuli | May 2010 | A1 |
20100164984 | Rane | Jul 2010 | A1 |
20100218086 | Howell et al. | Aug 2010 | A1 |
20100231598 | Hernandez et al. | Sep 2010 | A1 |
20100275161 | DiCamillo | Oct 2010 | A1 |
20100321393 | Levantovsky | Dec 2010 | A1 |
20110090229 | Bacus et al. | Apr 2011 | A1 |
20110090230 | Bacus et al. | Apr 2011 | A1 |
20110093565 | Bacus et al. | Apr 2011 | A1 |
20110115797 | Kaplan | May 2011 | A1 |
20110131153 | Grim, III | Jun 2011 | A1 |
20110188761 | Boutros et al. | Aug 2011 | A1 |
20110238495 | Kang | Sep 2011 | A1 |
20110271180 | Lee | Nov 2011 | A1 |
20110276872 | Kataria | Nov 2011 | A1 |
20110289407 | Naik | Nov 2011 | A1 |
20110310432 | Waki | Dec 2011 | A1 |
20120001922 | Escher et al. | Jan 2012 | A1 |
20120016964 | Veen et al. | Jan 2012 | A1 |
20120033874 | Perronnin | Feb 2012 | A1 |
20120066590 | Harris et al. | Mar 2012 | A1 |
20120072978 | DeLuca | Mar 2012 | A1 |
20120092345 | Joshi et al. | Apr 2012 | A1 |
20120102176 | Lee et al. | Apr 2012 | A1 |
20120102391 | Lee et al. | Apr 2012 | A1 |
20120127069 | Santhiveeran et al. | May 2012 | A1 |
20120134590 | Petrou | May 2012 | A1 |
20120215640 | Ramer et al. | Aug 2012 | A1 |
20120288190 | Tang | Nov 2012 | A1 |
20120306852 | Taylor | Dec 2012 | A1 |
20120307263 | Ichikawa et al. | Dec 2012 | A1 |
20120323694 | Lita et al. | Dec 2012 | A1 |
20120323971 | Pasupuleti | Dec 2012 | A1 |
20130033498 | Linnerud | Feb 2013 | A1 |
20130120396 | Kaplan | May 2013 | A1 |
20130127872 | Kaplan | May 2013 | A1 |
20130163027 | Shustef | Jun 2013 | A1 |
20130179761 | Cho | Jul 2013 | A1 |
20130215126 | Roberts | Aug 2013 | A1 |
20130215133 | Gould et al. | Aug 2013 | A1 |
20130321617 | Lehmann | Dec 2013 | A1 |
20140025756 | Kamens | Jan 2014 | A1 |
20140153012 | Seguin | Jun 2014 | A1 |
20150100882 | Severenuk | Apr 2015 | A1 |
20150193386 | Wurtz | Jul 2015 | A1 |
Number | Date | Country |
---|---|---|
2166488 | Mar 2010 | EP |
2857983 | Apr 2015 | EP |
06-258982 | Sep 1994 | JP |
10-124030 | May 1998 | JP |
2002-507289 | Mar 2002 | JP |
05-215915 | Aug 2005 | JP |
05-217816 | Aug 2005 | JP |
07-011733 | Jan 2007 | JP |
544595 | Aug 2003 | TW |
200511041 | Mar 2005 | TW |
WO 9423379 | Oct 1994 | WO |
WO 9900747 | Jan 1999 | WO |
WO 0191088 | Nov 2001 | WO |
WO 03023614 | Mar 2003 | WO |
WO 2004012099 | Feb 2004 | WO |
WO 2005001675 | Jan 2005 | WO |
Entry |
---|
Adobe Systems Incorporated, “The Type 42 Font Format Specification,” Technical Note #5012, Jul. 31, 1998, pp. 1-24. |
Adobe Systems Incorporated, “PostScript Language Reference—Third Edition,” Feb. 1999, pp. 313-390. |
Adobe Systems Incorporated, “To Unicode Mapping File Tutorial,” Adobe Technical Note, XP002348387, May 2003. |
“Announcing Speakeasy: A new open-source language tool from Typekit,” Oct. 28, 2010, on-line http://blog.typekit.com/2010/10/28/announcing-speakeasy-a-open-source-language-tool-from-typekit/. |
Apple Computers, “The True Type Font File,” Oct. 27, 2000, pp. 1-17. |
Celik et al., “W3C, CSS3 Module: Fonts,” W3C Working Draft, Jul. 31, 2001, pp. 1-30. |
International Search Report & Written Opinion issued in PCT application No. PCT/US10/01272, mailed Jun. 15, 2010, 6 pages. |
International Search Report & Written Opinion issued in PCT application No. PCT/US2011/034050 dated Jul. 15, 2011, 13 pages. |
International Search Report & Written Opinion, PCT/US2013/026051, mailed Jun. 5, 2013, 9 pages. |
Japanese Office Action, 2009-521768, mailed Aug. 28, 2012. |
Supplementary European Search Report, European Patent Office, European patent application No. EP 07796924, dated Dec. 27, 2010, 8 pages. |
TrueType Fundamentals, Microsoft Typography, Nov. 1997, pp. 1-17. |
Extensis, Suitcase 10.2, Quick Start Guide for Macintosh, 2001, 23 pgs. |
International Search Report & Written Opinion, PCT/US2013/071519, mailed Mar. 5, 2013, 12 pages. |
Open Text Exceed, User's Guide, Version 14, Nov. 2009, 372 pgs. |
Universal Type Server, Upgrading from Suitcase Server, Sep. 29, 2009, 18 pgs. |
Japanese Office Action, 2013-508184, mailed Apr. 1, 2015. |
International Preliminary Report on Patentability issued in PCT application No. PCT/US2013/071519 dated Jun. 9, 2015, 9 pages. |
“A first experiment with multicoloured web fonts,” Manufactura Independente website, Feb. 28, 2011, Retrieved from the internet: http://blog.manufacturaindependente.org/2011/02/a-first-experiment-with-multicoloured-web-fonts/. |
“Colorfont/v1,” Feb. 28, 2011, retrieved from the internet: http://manufacturaindependente.com/colorfont/v1/. |
International Search Report & Written Opinion, PCT/US2013/076917, mailed Jul. 9, 2014, 11 pages. |
“photofont.com—Use photofonts,” Sep. 2, 2012, retrieved from the internet: http://web.archive.org/web/20120902021143/http://photofont.com/photofont/use/web. |
European Search Report, 14187549.2, Jul. 30, 2015 7 pages. |
Saurabh, Kataria et al., “Font retrieval on a large scale: An experimental study”, 2010 17th IEEE International Conference on Image Processing (ICIP 2010); Sep. 26-29, 2010; Hong Kong, China, IEEE, Piscataway, NJ, USA, Sep. 26, 2010, pp. 2177-2180. |
European Search Report, 14184499.3, Jul. 13, 2015, 7 pages. |
“Flash CS4 Professional ActionScript 2.0”, 2007, retrieved on http://help.adobe.com/en—US/AS2LCR/Flash—10.0/help.html?content=00000284.html on Aug. 31, 2015. |
European Search Report, 13179728.4, Sep. 10, 2015, 3 pages. |
Ma Wei-Ying et al., “Framework for adaptive content delivery in heterogeneous network environments”, Jan. 24, 2000, Retrieved from the Internet: http://www.cooltown.hp.com/papers/adcon/MMCN2000. |
Doughty, Mike, “Using OpenType® Fonts with Adobe® InDesign®,” Jun. 11, 2012 retrieved from the internet: http://webarchive.org/web/20121223032924/http://www.sketchpad.net/opentype-indesign.htm (retrieved Sep. 22, 2014), 2 pages. |
Goswami, Gautum, “Quite ‘Writly’ Said!,” One Brick at a Time, Aug. 21, 2006, Retrieved from the internet: :http://gautamg.wordpress.com/2006/08/21/quj.te-writely-said/ (retrieved on Sep. 23, 2013), 3 pages. |
International Search Report & Written Opinion, PCT/US2014/010786, mailed Sep. 30, 2014, 9 pages. |
Wenzel, Martin, “An Introduction to OpenType Substitution Features,” Dec. 26, 2012, Retrieved from the internet: http://web.archive.org/web/20121226233317/http://ilovetypography.com/OpenType/opentype-features. Html (retrieved on Sep. 18, 2014), 12 pages. |
“Saffron Type System”, retrieved from the internet Nov. 12, 2014, 7 pages. |
Number | Date | Country | |
---|---|---|---|
20140195903 A1 | Jul 2014 | US |
Number | Date | Country | |
---|---|---|---|
61750616 | Jan 2013 | US |