Patent ID: 12216900

DETAILED DESCRIPTION

Various implementations are disclosed herein that describe the operation of an enhanced shape-based keyboard that integrates an adaptability functionality and an autocomplete algorithm for varying computing devices. Such devices may include but are not limited to a phone, tablet, laptop, or any other device that displays a touch screen keyboard. Further implementations can include devices without a touch screen display wherein a physical keyboard is provided for the device such that the individual keys of said keyboard are mapped to a virtual enhanced shape-based keyboard within the device.

In an implementation, the enhanced shape-based keyboard displays a compressed keyboard layout where the individual keys of the keyboard display the base shapes of the desired lexicon. Base shapes describe characters without accents or additional markers to represent their character. For example, in languages that use the Arabic script, (e.g., Arabic, Urdu, Sindhi, Pashto, Farsi, etc.), the letters “”, “”, and “” share the same base shape, “”. Thus, a shape-based keyboard minimizes the number of keys physically required on the keyboard as only the base shapes of the chosen script are displayed. In an implementation, the user may access accented characters by triggering a pop-up menu of all the available accent options for a desired base-shape.

In an implementation, the enhanced shape-based keyboard includes an adaptability functionality. The adaptability functionality allows the enhanced shape-based keyboard to adapt the shape of the presented keys based on the current user input. In cursive scripts, the shape of a letter will change depending on the letter's placement in a word. Meaning, each letter has a different character shape, including shapes for when the letter connects to a subsequent letter, a proceeding letter, both a subsequent and preceding letter, or neither a subsequent or preceding letter. Groups of joined letters are referred to as a grapheme. In the context of a grapheme, letters may be in an initial, medial, final, or isolated position. Letters in an initial position begin a grapheme and consist of character shapes that may only connect with a subsequent letter. Letters in a medial position neither start, nor end a grapheme, but are in the middle. Letters in the medial position consist of character shapes that may connect to both the preceding and subsequent letters. Letters in a final position end a grapheme and consist of character shapes that may only connect with a preceding letter. Letters in an isolated form have no other letters in the same grapheme and consist of character shapes without connections to any other letters. Further adaptations of letters can be included in these lexicons, such that the shape of a letter is dependent on the combination of letters within the word.

In an implementation, there are two adaptations the enhanced shape-based keyboard's adaptability functionality can take on. First, the enhanced shape-based keyboard may adapt to an initial shape-based keyboard. The initial shape-based keyboard comprises keys that display the initial base shapes of the desired lexicon. In an implementation, the initial shape-based keyboard is displayed to the user when either no user input has been entered, the user has indicated the completion of their input, or the preceding letter (within the context of the user inputted message) does not join to subsequent letters. In an implementation, the user may indicate the completion of their input with a selection of either the space key or an ending key.

The second adaptation of the enhanced shape-based keyboard's adaptability functionality includes a medial shape-based keyboard. The medial shape-based keyboard comprises keys that display the medial version of the base shapes as seen on the initial shape-based keyboard. In an implementation, the medial shape-based keyboard is displayed to the user after receiving a user input character and continues to be displayed until no longer required. Meaning, the adaptability functionality of the enhanced shape-based keyboard displays the medial shape-based keyboard when the initial shape-based keyboard is not required.

In an implementation, throughout the interaction between the user and the interface, the adaptability functionality of the enhanced shape-based keyboard will adapt the shape of both the characters on the keyboard as well as the characters of the user input. Prior to receiving any input from the user, the enhanced shape-based keyboard presents the initial shape-based keyboard. Once the user inputs their first initial shape-based character the compressed keyboard will adapt to the medial shape-based keyboard. As the user continues to input characters both the keyboard and the characters will remain in the medial representation. Once the user has completed their desired string, the user can indicate this action with the selection of the space key. Upon this indication the final character of the user input string will adapt from its medial shape-based representation to its final shape-based representation. Simultaneously this indication converts the medial shape-based keyboard back to the initial shape-based keyboard. In further implementations, other keys besides the space key may also indicate the completion of user input such that the enhanced shape-based keyboard performs the same actions as described in the earlier implementation.

As an example, if a user desired to input a five-letter word, they would first be presented with the initial shape-based keyboard. Once the user selects the first character of their word, the keyboard will adapt to the medial-shape based keyboard. The next four characters of the word will then be inputted as medial shape-based characters. Once the user indicates the completion of this input, the fifth character of the word will adapt to its final shape-based character representation, while the medial shape-based keyboard converts back to the initial shape-based keyboard.

In an implementation, the enhanced shape-based keyboard includes an autocomplete algorithm. The autocomplete algorithm compares received user input to a database of words to generate a set of possible candidate words for the received user input. As the received user input is a shape-based representation of a word, the autocomplete algorithm will provide candidate words to replace the shape-based user input string. In an implementation, the autocomplete algorithm suggests the top-ranking candidate words to the user and replaces the user input string with the highest-ranking candidate word based on a set of ranking inputs. In an implementation, the autocomplete algorithm utilizes four ranking inputs to determine the set of candidate words that best compare to the received user input.

The first ranking input is a word match level. The word match level is indicative of the numbers of letters within the candidate word that either closely or exactly match the characters of the shape-based user-input string. Determining the word match level is done through a sequential process, where the autocomplete algorithm compares each character of the shape-based user input string to the corresponding letter of the candidate word. For example, if the user inputted a four-character long shape-based string, the autocomplete algorithm would compare the first character of the string with the first letter of a candidate word. This is followed by the second character of the string being compared to the second letter of the candidate word and so on.

The second ranking input describes the character relationships between the characters of the shape-based user input string and the letters of the candidate words. Determining the character relationships is done through a similar sequential process, such that the autocomplete algorithm compares each character of the shape-based user input string to the corresponding letter of the candidate word. In an implementation, the autocomplete algorithm utilizes five distinctive character relationships to determine the strength between the characters of the user shape-based input string and the letters of the candidate word.

The first character relationship the autocomplete algorithm can determine between the candidate letter and the shape-based user input character is an exact relationship. The autocomplete algorithm identifies the exact relationship when the candidate letter matches the shape of the shape-based user input character.

The second character relationship is the physical relationship. The autocomplete algorithm identifies the physical relationship when the candidate letter matches the shape of the keys in closest proximity to the shape-based user input character. This relationship was designed for human error as the user may unintentionally choose the wrong shape-based character when inputting their desired shape-based input string.

The third character relationship is an aural relationship. The autocomplete algorithm identifies the aural relationship when the candidate letter matches the sound of the shape-based user input character. This relationship was designed for when the user is unsure how to spell their desired word and thus attempt to input a phonetic representation of the word. For example, in the English lexicon, if the user wanted to input the word “certificate” and were unsure how to spell it, they may input a phonetic representation such as, “sertificate”. In this example the autocomplete algorithm would then take the user input “sertificate” and replace it with the correct spelling.

The fourth character relationship the autocomplete algorithm can determine is a physical aural relationship. The autocomplete algorithm identifies the physical aural relationship when the candidate letter matches the sound of the keys in close proximity to the shape-based user input character. This relationship is like the physical relationship, but with the added aural component.

The fifth, and last, character relationship the autocomplete algorithm can identify is a null relationship. The autocomplete algorithm identifies the null relationship when the candidate letter shares no relation with the shape-based user input character. In an implementation, the autocomplete algorithm uses the character relationships to determine the character relationship ranking input.

The next ranking input the autocomplete algorithm utilizes is a proximity input. The proximity input examines the physical locations on the screen that the user has pressed.

The final ranking input the autocomplete algorithm utilizes is the frequency input. The frequency input analyzes the frequency of the candidate word in a known lexicon both independently as well as within the context of the typed string. For instance, more commonly used candidate words would be considered a higher match than more abstract candidate words.

In an implementation, after the autocomplete, algorithm has determined the rankings of the candidate words, the autocomplete algorithm then replaces the shape-based user input string with the candidate word that was ranked highest. The autocomplete algorithm also suggests to the user other candidate words that ranked high in case the autocomplete algorithm was unable to initially identify the desired user input. The user can select these alternate candidate words, if the original replacement was incorrect.

It may be appreciated that the compressed layout of the enhanced shape-based keyboard may be implemented individually such that the adaptability functionality and autocomplete algorithm are not included. For example, the compressed shape-based layout may be integrated into either the physical or virtual keyboard such that the keyboard is displayed on a touch screen, or a physical keyboard is mapped to a virtual layout. Either way both implementations do not require the adaptability function or the autocomplete algorithm. The compressed layout of a shape-based keyboard allows for the increased size of the physical keys as less keys are required in the shape-based format. This reaps multiple benefits for the user as the increased size improves the character visibility, as well as the physical access to the key.

In further implementations the compressed layout of the shape-based keyboard may also be singularly integrated with either the adaptability functionality or the autocomplete algorithm. Thus, these implementations may include a compressed adaptable shape-based keyboard or a compressed shape-based keyboard with an autocomplete algorithm functionality respectively.

Implementations of the technology will now be described in detail with reference to several implementations illustrated in the accompanying drawings. In the following description numerous specific details are set forth such that they provide a thorough understanding of the implementations of the technology. In other instances, well known process steps and/or structures may not be described in detail in order to not unnecessarily obscure the technology.

FIG.1Aillustrates a technical environment for an enhanced shape-based keyboard, herein referred to as environment100. Environment100includes computing device101, such that environment100displays computing device101under various conditions. Computing device101includes—but is not limited to—touch screen display103. Touch screen display103is representative of the screen which displays the enhance shape-based keyboard. In an implementation, computing device101is equipped with software that supplies the enhanced shape-based keyboard to touch screen display103.

The enhanced shape-based keyboard of touch screen display103is represented by initial shape-based keyboard105A and medial shape-based keyboard105B. In an implementation, touch screen display103will display initial shape-based keyboard105A or medial shape-based keyboard105B based on the user input.

Prior to any user input, touch screen display103presents the user with initial shape-based keyboard105A. Initial shape-based keyboard105A comprises of a set of initial shape-based keys, including initial shape-based key107A. Upon receiving user input109A of initial shape-based key107A, initial shape-based keyboard105A adapts to medial shape-based keyboard105B. Medial shape-based keyboard105B comprises a corresponding set of medial shape-based keys. For example, medial shaped-based key107B of medial shape-based keyboard105B is the medial representation of initial shape-based key107A. In addition to displaying medial shape-based keyboard105B, upon receiving user input109A, touch screen display103displays initial shape-based character111.

Turning toFIG.1B, environment100illustrates computing device101, now displaying user input string113. User input string113is comprised of four shape-based characters such that the first character displays an initial representation of the character, followed by medial representations of the subsequent characters, including medial shape-based character117A. When a user is satisfied with their input string, the user indicates they have completed their input through the selection of ending key115.

Ending key115includes final-representation key115A. Final representation key115A depicts the final shape-based representation of the last shape-based character entered by the user (i.e., medial shape-based character117A). In an implementation, final representation key115A depicts the isolated shape-based character representation. When selected, via user input109B, final representation key115A converts medial character representation117A to final character representation117B. Further, selection of final representation key115A converts medial shape-based keyboard105B back to initial shape-based keyboard105A.

Ending key115further includes space key115B. When selected, via user input109B, space key115B inputs a space after user input string113and converts medial character representation117A to final character representation117B. Further, selection of space key115B converts medial shape-based keyboard105B back to initial shape-based keyboard105A.

In an implementation, other special keys may also be used to similarly end character input, change the shape of the last entered character from medial to final, and adapt the keyboard to an initial shape layout. One such key is the zero-width non-joiner key, which ends a grapheme without entering an explicit space character.

FIG.2illustrates process200for employing an enhanced shape-based keyboard with an adaptability functionality. Process200may be implemented in the context of program instructions that, when executed by a suitable processing system (i.e., computing device101), direct the processing system to operate as follows, referring parenthetically to the steps inFIG.2.

To begin, the processing system displays a first keyboard to a user, such that the first keyboard is representative of an initial shape-based keyboard (step201). Next, the processing system receives a first user input of an initial shape-based character from the initial shape-based keyboard (step203). In response, to the first user input, the processing system displays a second keyboard such that the second keyboard is representative of a medial shape-based keyboard (step205).

In an implementation, the processing system continues to display the medial shape-based keyboard until the user indicates completion of their input. Users may either select the space key, or an ending key to indicate completed input. In an implementation the ending key displays the last character entered by the user in a final shape-based representation. Upon indication that the user has completed their input, the processing system will return to the first keyboard so that process200can restart.

Referring back toFIG.1A, the following describes a brief example of process200applied in the context of computing device101. Computing device101first displays initial shape-based keyboard105A. Next, computing device101receives user input109A of initial shape-based key107A. In response, computing device101converts initial shape-based keyboard105A to medial shape-based keyboard105B. Process200may restart when the user has indicated to computing device101that they have completed their input.

FIG.3illustrates environment300for selecting an accented character. Environment300includes computing device301. Computing device301is representative of a device that may employ the enhanced shape-based keyboard. Computing device301includes enhanced shape-based keyboard303. Enhanced shape-based keyboard303displays the base shapes of a lexicon, such that the keyboard includes shape-based key305.

In an implementation if the user desired to select an accented version of shape-based key305, the user can press and hold shape-based key305to trigger pop-up menu307. Pop-up menu307displays each available accented letter corresponding to shape-based key305. The user is then allowed to select the accented letter of their choice from pop-up menu307. In an implementation, each key of enhanced shape-based keyboard303that has further accents includes a corresponding pop-up menu. In an implementation, the pop-up menu to select accented versions of characters may be produced by another interaction, such as a mouse click. A similar interaction can be used to add further accents, such as diacritics that indicate vowelization.

FIGS.4A and4Billustrate another technical environment for an enhanced shape-based keyboard, herein referred to as environment400. Environment400includes mobile device401, such that environment400displays mobile device401under various conditions. Mobile device401is representative of any mobile device that employs a touch screen. For example, such mobile devices may include iOS devices, Android devices, or devices of the like. Further, mobile device401may be representative of computing device101ofFIGS.1A and1B. In an implementation, mobile device401is equipped with software that supplies the enhanced shape-based keyboard.

The enhanced shape-based keyboard employed by mobile device401is represented by initial shape-based keyboard403A (i.e., initial shape-based keyboard105A) and medial shape-based keyboard403B (i.e., medial shape-based keyboard105B). When the enhanced shape-based keyboard has received no user input, mobile device401displays initial shape-based keyboard401A. If the user selects initial shape-based key405A, then mobile device401will display initial shape-based character407. This character selection also leads to the adaptation of initial shape-based keyboard403A to medial shape-based keyboard403B, such that the medial representation of initial shape-based key405A is depicted by medial shape-based key405B.

FIG.5illustrates environment500for an enhanced shape-based keyboard with shadow keys. Environment500includes computing device501, representative of any device which integrates a touch screen keyboard. Computing device501includes enhanced shape-based keyboard503. Enhanced shape-based keyboard503is representative of a keyboard that displays the base shapes of a lexicon as well as a shadow representation of the last text entered by the user. For example, shape-based key505displays shape-based character507and shadow509. Shadow509is a shadow representation of message511, such that shadow509represents as many characters from message511as shape-based key505allots.

In an implementation, shape-based key505anticipates how the input of said key would be displayed when connected to the final character of message511. For example, shape-based character507of shape-based key505may reflect the font/calligraphic style of the text when output to message511. This allows the user to view how the input of shape-based character507would display in the context of message511.

FIGS.6A and6Billustrate method600for employing the enhanced shape-based keyboard's autocomplete algorithm. Method600may be implemented in the context of program instructions that, when executed by a suitable processing system (e.g., computing device101), direct the processing system to operate as follows, referring parenthetically to the steps inFIGS.6A and6B.

To begin, the processing system receives a shape-based user input string (step601). In response, the processing system employs the autocomplete algorithm to rank a database of candidate words to determine probable matches for the shape-based user input string (step603). To rank the database of candidate words the autocomplete algorithm examines the candidate words against the following ranking inputs.

First the autocomplete algorithm determines a word match level between the candidate word and the shape-based user input string (step604). To determine the word match level, the autocomplete algorithm measures the number of letters within the candidate word that match the shape-based user input string. Meaning, the autocomplete algorithm examines both the shape of the characters within the shape-based user input string as well as the layers of accents if any were added by the user (as detailed inFIG.3).

Second, the autocomplete algorithm examines the strength of the character relationships between the candidate word and the shape-based user input string (step606). Details to determine the character relationship ranking input are discussed with reference toFIG.6B.

Next the autocomplete algorithm examines the proximity of the physical locations on the screen that the user pressed against the letters of the candidate words (step608). The proximity input ranks the letters within the candidate words as higher if they fall closer in range to where the user physically selected. While candidate letters that are further away in proximity to where the user physically selected are ranked lower.

Finally, the autocomplete algorithm evaluates the frequency of the candidate word within the known lexicon (step610). Words that appear more frequently are ranked higher than words that appear to be uncommon.

Upon ranking the candidate words against the set of ranking inputs, the autocomplete algorithm then suggests the top matches of candidate words as defined by the ranking inputs to the user (step611). This is followed by the replacement of the highest-ranking candidate word with the user shape-based string (step613). If the autocomplete algorithm is unable to correctly identify the user's intentions, then the user can examine the alternate high-ranking candidate words for replacement.

FIG.6Billustrates a detailed process on how the autocomplete algorithm determines the strength of character relationships (step606). To begin, the autocomplete algorithm directly compares each candidate word with the shape-based user input string. This comparison is done through a sequential process where each letter of the candidate word is compared to a corresponding character of the shape-based user input string to determine the character relationships between each candidate word letter and each shape-based user input string character (step615).

There are a total of five predefined character relationships that the candidate letter and the shape-based user input string can share. The first is an exact relationship where the candidate word letter matches the shape of the shape-based user input character (step612). The second is a physical relationship where the shape of the candidate letter matches the shape of the keys in close proximity to the shape-based user input character (step614). The third character relationship that a candidate letter and shape-based character can share is the aural relationship where the candidate letter matches the sound of the shape-based user input character (step616). The fourth relationship is a combination of relations two and three and is referred to as the physical aural relationship where the candidate letter matches the sound of the keys in close proximity to the shape-based user input character (step618). The fifth and final relationship is the null relationship wherein the candidate letter and shape-based user input character share no common qualities (step620).

Upon defining the character relationships between each candidate word and the shape-based user input string, the autocomplete algorithm can then determine the strength of these character relationships in order to define the character relationship ranking input of the candidate word as completed in step606ofFIG.6A. Candidate words that primarily share the first four defined character relationships are ranked strongly as compared to candidate words that primarily share a null relationship. This defined set of character relationships allows the autocomplete algorithm to best predict the intentions of the user's original shape-based input.

FIG.7illustrates another method for employing the enhanced shape-based keyboard's autocomplete algorithm, herein referred to as method700. Method700may be implemented in the context of program instructions that, when executed by a suitable processing system (e.g., computing device101), direct the processing system to operate as follows, referring parenthetically to the steps inFIG.7.

To begin, the processing system receives shape-based user input string702(step701). In response, the processing system employs the autocomplete algorithm to rank database704(step703). Database704is representative of the database of candidate words the autocomplete algorithm ranks against shape-based user input string702. To rank the database of candidate words the autocomplete algorithm first determines the strength of character relationships between shape-based user input string702and the letters of candidate words from database704as detailed inFIG.6B(step705).

Next the autocomplete algorithm ranks the candidate words based on the ranking inputs as defined inFIG.6A(step707). The autocomplete algorithm then suggests a set of top-ranking candidate words706to the user (step709). This is finished with the autocomplete algorithm replacing shape-based user input string702with highest-ranking candidate word708from the set of top-ranking candidate words706(step711).

FIG.8illustrates computing device801that is representative of any system or collection of systems in which the various processes, programs, services, and scenarios disclosed herein may be implemented. Examples of computing device801include, but are not limited to, desktop and laptop computers, tablet computers, mobile computers, and wearable devices. Examples may also include server computers, web servers, cloud computing platforms, and data center equipment, as well as any other type of physical or virtual server machine, container, and any variation or combination thereof.

Computing device801may be implemented as a single apparatus, system, or device or may be implemented in a distributed manner as multiple apparatuses, systems, or devices. Computing device801includes, but is not limited to, processing system802, storage system803, software805, communication interface system807, and user interface system809(optional). Processing system802is operatively coupled with storage system803, communication interface system807, and user interface system809.

Processing system802loads and executes software805from storage system803. Software805includes and implements keyboard process806, which is (are) representative of the keyboard processes discussed with respect to the preceding Figures, such as process200, method600, and method700. When executed by processing system802, software805directs processing system802to operate as described herein for at least the various processes, operational scenarios, and sequences discussed in the foregoing implementations. Computing device801may optionally include additional devices, features, or functionality not discussed for purposes of brevity.

Referring still toFIG.8, processing system802may comprise a micro-processor and other circuitry that retrieves and executes software805from storage system803. Processing system802may be implemented within a single processing device but may also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing system802include general purpose central processing units, graphical processing units, application specific processors, and logic devices, as well as any other type of processing device, combinations, or variations thereof.

Storage system803may comprise any computer readable storage media readable by processing system802and capable of storing software805. Storage system803may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of storage media include random access memory, read only memory, magnetic disks, optical disks, flash memory, virtual memory and non-virtual memory, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other suitable storage media. In no case is the computer readable storage media a propagated signal.

In addition to computer readable storage media, in some implementations storage system803may also include computer readable communication media over which at least some of software805may be communicated internally or externally. Storage system803may be implemented as a single storage device but may also be implemented across multiple storage devices or sub-systems co-located or distributed relative to each other. Storage system803may comprise additional elements, such as a controller capable of communicating with processing system802or possibly other systems.

Software805(including keyboard process806) may be implemented in program instructions and among other functions may, when executed by processing system802, direct processing system802to operate as described with respect to the various operational scenarios, sequences, and processes illustrated herein. For example, software805may include program instructions for implementing a keyboard process as described herein.

In particular, the program instructions may include various components or modules that cooperate or otherwise interact to carry out the various processes and operational scenarios described herein. The various components or modules may be embodied in compiled or interpreted instructions, or in some other variation or combination of instructions. The various components or modules may be executed in a synchronous or asynchronous manner, serially or in parallel, in a single threaded environment or multi-threaded, or in accordance with any other suitable execution paradigm, variation, or combination thereof. Software805may include additional processes, programs, or components, such as operating system software, virtualization software, or other application software. Software805may also comprise firmware or some other form of machine-readable processing instructions executable by processing system802.

In general, software805may, when loaded into processing system802and executed, transform a suitable apparatus, system, or device (of which computing device801is representative) overall from a general-purpose computing system into a special-purpose computing system customized to support adaptive keyboards in an optimized manner. Indeed, encoding software805on storage system803may transform the physical structure of storage system803. The specific transformation of the physical structure may depend on various factors in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the storage media of storage system803and whether the computer-storage media are characterized as primary or secondary storage, as well as other factors.

For example, if the computer readable storage media are implemented as semiconductor-based memory, software805may transform the physical state of the semiconductor memory when the program instructions are encoded therein, such as by transforming the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. A similar transformation may occur with respect to magnetic or optical media. Other transformations of physical media are possible without departing from the scope of the present description, with the foregoing examples provided only to facilitate the present discussion.

Communication interface system807may include communication connections and devices that allow for communication with other computing systems (not shown) over communication networks (not shown). Examples of connections and devices that together allow for inter-system communication may include network interface cards, antennas, power amplifiers, RF circuitry, transceivers, and other communication circuitry. The connections and devices may communicate over communication media to exchange communications with other computing systems or networks of systems, such as metal, glass, air, or any other suitable communication media. The aforementioned media, connections, and devices are well known and need not be discussed at length here.

Communication between computing device801and other computing systems (not shown), may occur over a communication network or networks and in accordance with various communication protocols, combinations of protocols, or variations thereof. Examples include intranets, internets, the Internet, local area networks, wide area networks, wireless networks, wired networks, virtual networks, software defined networks, data center buses and backplanes, or any other type of network, combination of network, or variation thereof. The aforementioned communication networks and protocols are well known and need not be discussed at length here.

As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

It may be appreciated that, while the inventive concepts disclosed herein are discussed in the context of such productivity applications, they apply as well to other contexts such as gaming applications, virtual and augmented reality applications, business applications, and other types of software applications. Likewise, the concepts apply not just to electronic documents, but to other types of content such as in-game electronic content, virtual and augmented content, databases, and audio and video content.

Indeed, the included descriptions and figures depict specific embodiments to teach those skilled in the art how to make and use the best mode. For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the disclosure. Those skilled in the art will also appreciate that the features described above may be combined in various ways to form multiple embodiments. As a result, the invention is not limited to the specific embodiments described above, but only by the claims and their equivalents.