OSL provides an OpenType font based on Cuneiform Noto which covers all of the OSL sign repertoire, some of which are located in the Unicode Private Use Area in plane 15 (U+F0000–U+FFFFD) and supports sign-mergers and variants by using the OpenType Stylistic Variation and SALT features, as well as ligatures implemented using Unicode Ideographic Variation Selectors in the range U+E0100 to U+E01EF.
The current FontLab source for the OSL font is available as Noto-SansCuneiform-OSL.vfc [https://github.com/oracc/oracc2/raw/refs/heads/main/lib/fonts/Noto-SansCuneiform-OSL.vfc]. The OpenType version is delivered as a web font which means it is not necessary for individual users to download it; it is available as Noto-SansCuneiform-OSL.ttf [https://github.com/oracc/oracc2/raw/refs/heads/main/lib/fonts/Noto-SansCuneiform-OSL.ttf] for use with other applications.
OSL script variation is accessible in various ways. Common sets of variants are grouped into named script-styles which correspond to OpenType Stylistic Sets. These script-styles implement general variations such as the common merger of IM with NI₂ but are not intended to capture individual manuscript-level variation. A script-style may have individual character variants in addition to the Stylistic Set.
The following script-styles are presently defined:
| Script-style | OT Stylistic Set | |
| Default | (none) | Selects standard font glyphs. |
| Early | ss01 | Selects Early Dynastic glyph forms. |
| Middle | ss02 | Selects Ur III/OB glyph forms. |
| Late | ss03 | Selects later mergers. |
| Gudea | ss02 | Selects Ur III/OB glyphs along with de₂=UMUM@s. |
| ED12 | ss04 | Selects UET II+ glyphs |
| Fara | ss05 | Selects Fara glyphs |
OSL script-styles can be selected in a project configuration file or in an ATF protocol.
Configuration file:
<option name="osl-script-style" value="gudea"/>
ATF protocol:
#atf: script gudea
Individual character variants may be automatically selected via transliteration based on the value or sign/form name or they may be selectable using a graphetic suffix, e.g., de₂\s might select the UMUM@s version of DE₂ which would be an alternative to transliterating as de₂(UMUM@s).
Script-styles are defined in osl.asl. A script-style label is defined using @scriptdef:
@scriptdef gudea ss03
Script-style information is added to signs and forms with @script, which must be repeated for each script-style that is required for a given sign.
The first argument to @script must be a script-style label as defined with @scriptdef, followed by a colon. The following arguments are a semi-colon-separated list of directives ending with a period.
The following directives are supported:
@script gudea: merge NI₂. This is not
used by the font technology, but is used when building
period-specific sub-signlists.@script can be used both with encoded characters and with sequences. For sequences, the font-related selectors SALT and Stylistic Set are not relevant. IVS can be used, however, to select custom ligatures of the sequence that may be defined in the font.
The OSL processor, sx, generates script-style data that can be used by the ATF processor. If a script-style is given in the project configuration file it is output in the osl-script attribute of all texts in the project. If a script-style is given in an ATF protocol, it is output in the osl-script attribute of the current text; both methods can be used, with the protocol overriding the configuration file.
If salt or ivs directives are given for a sign, corresponding attributes are added on grapheme nodes besides the utf8 attribute. For salt the attribute value is the number; for ivs the attribute value is the Unicode cuneiform sequence consisting of the base sign and the IVS, given in UTF-8 encoding.