Giter Club home page Giter Club logo

last-resort-font's Introduction

Last Resort Font

Last Resort is a special-purpose font that includes a collection of glyphs to represent types of Unicode characters. These glyphs are specifically designed to allow users to recognize that a code point is one of the following:

  • In which particular block a Unicode character is encoded
  • In the PUA (Private Use Area) for which no agreement exists
  • Unassigned (reserved for future assignment)
  • A noncharacter

Downloading the fonts

The latest pre-built binaries of the Last Resort fonts, which correspond to Unicode Version 15.1.0, can be easily downloaded from the Latest Release. These fonts may be updated for future versions of the Unicode Standard as time and resources permit.

Last Resort & Last Resort High-Efficiency

This repository includes two versions of the Last Resort font: Last Resort and Last Resort High-Efficiency. Although both fonts can be installed at the same time—because they have different names—you are encouraged to download and install only the one that is expected to work in the environments that you use:

  • The file LastResort-Regular.ttf is a font named Last Resort, and its 'cmap' table includes a Format 12 (Segmented coverage) subtable that is supported in virtually all modern environments. This font is 8MB and includes 5,372 glyphs. Download and install this font if you are unsure which one to use.

  • The file LastResortHE-Regular.ttf is a font named Last Resort High-Efficiency, and its 'cmap' table includes the more efficient—for this type of font—Format 13 (Many-to-one range mappings) subtable that may not be supported in some environments, such as most Windows and Adobe apps. Therefore, this font, which is considerably smaller (500K) and with fewer glyphs (362), requires greater care when downloaded and installed.

Both fonts’ 'cmap' tables include a Format 4 (Segment mapping to delta values) subtable, which is a Windows OS requirement. That of the Last Resort High-Efficiency font is a stub (aka empty) subtable.

Description

The glyphs of the Last Resort fonts are used as the backup of “last resort” to any other font: if a font cannot represent any particular Unicode character, the appropriate “missing” glyph from the Last Resort fonts is displayed instead. This provides users with the ability to more easily discern what type of character it is, and provides a clue as to what type of font they would need to display the characters properly. For more information, see The Unicode Standard, Section 5.3, Unknown and Missing Characters.

Overall, there are a number of advantages to using the Last Resort fonts for unrepresentable characters:

  • Operating systems are freed from the overhead of providing a full Unicode font.
  • Users see something more meaningful than a black box or other geometric shape for unrepresentable characters.
  • Users familiar with the scripts being represented with the Last Resort fonts will readily identify what type of font needs to be installed in order to properly display the text.
  • Users unfamiliar with the missing scripts are shown easily-identified symbols rather than lengthy strings of unidentifiable characters.

Unicode blocks are illustrated by a representative glyph from the block, chosen to be as distinct as possible from glyphs of other blocks. A square surrounding frame provides a common, recognizable element, and embedded within the edge of this frame, only visible at large size, are a form of the block name and its code point range to aid in identification.

Sinhala Hiragana EgyptianHieroglyphs TransportMapSymbol

There are two particularly special types of glyphs in the fonts. One of the types represents any unassigned code point in an existing block. The other type represents the 66 noncharacter code points: FDD0..FDEF, FFFE..FFFF, 1FFFE..1FFFF, 2FFFE..2FFFF, 3FFFE..3FFFF, 4FFFE..4FFFF, 5FFFE..5FFFF, 6FFFE..6FFFF, 7FFFE..7FFFF, 8FFFE..8FFFF, 9FFFE..9FFFF, AFFFE..AFFFF, BFFFE..BFFFF, CFFFE..CFFFF, DFFFE..DFFFF, EFFFE..EFFFF, FFFFE..FFFFF, and 10FFFE..10FFFF.

UndefinedBMP UndefinedPlane3 NoncharacterBMP1 NoncharacterBMP2

Example glyphs were chosen in a number of ways. For example, almost all of the Brahmic scripts show the initial consonant ka, such as ක for Sinhala. Latin uses the letter A, because it’s the first letter, and because in each Latin block there is a letter A that is easily distinguished. Greek and Cyrillic use their last letters, Ω and Я, respectively, due to their distinctiveness. Most other scripts use their initial character where distinctive.

The Last Resort glyphs were drawn by Apple Inc., Michael Everson of Evertype, and Unicode, Inc.

Building the fonts from source

NOTE: The sources and build scripts may be added after Unicode Version 15.1.0 has been released (2023), and as time and resources permit.

Updated TrueType fonts may be issued shortly after a new version of the Unicode Standard has been released.

Getting Involved

Although the Last Resort Font repository is considered to be stable with no guarantee that it will be updated, suggestions can be provided by submitting a new issue.

Copyright & Licenses

Copyright © 1998-2024 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries.

The project is released under the SIL Open Font License, Version 1.1.

A CLA is required to contribute to this project - please refer to the CONTRIBUTING.md file (or start a Pull Request) for more information.

last-resort-font's People

Contributors

kenlunde avatar rickmcgowan avatar srl295 avatar tsengtsz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

last-resort-font's Issues

Sources and scripts upstream?

Where can we get the upstream sources and scripts to re-/build the font if we want to make our own updates available before official releases?

Incorrect ranges

A few of the last resort glyphs have incorrect values for the range of the block they represent:

lastresortmathoperatorssup: should be 2A00..2AFF, but shows 2AA0..2AFF.
lastresortcjkextf: should be 2CEB0..2EBEF, but shows 2B820..2CEAF.
lastresortvariationselectorsa: should be E0100..E01EF, but shows E0110..E01FF.

High-Efficiency font has an invalid Platform/Encoding/Format combination

The Last Resort High-Efficiency font has an invalid Platform/Encoding/Format combination. According to the OpenType specification "Encoding ID 6 should only be used in conjunction with 'cmap' subtable format 13; and subtable format 13 should only be used under platform ID 0 and encoding ID 6". However the LRHE font has subtable format 13 under Encoding ID 10 (Unicode Full Repertoire) and Platform ID 3 (Windows). The font should be changed to have subtable format 13 under Encoding ID 6 (Unicode Full Repertoire) and Platform ID 0 (Unicode).

Last Resort font displays the notdef glyph for BMP characters under Windows 10

The Last Resort font has two cmap tables: a Format 4 subtable (Encoding ID 1 and Platform ID 3) with zero characters defined; and a Format 10 subtable (Encoding ID 10 and Platform ID 3) covering 1,114,112 characters.

When tested with Notepad under Windows 10, characters in the BMP are displayed with the notdef glyph because Windows uses the Format 4 subtable for the BMP. All characters outside the BMP are displayed correctly because the Format 10 subtable is used for supra-BMP characters. See attached screenshot for Notepad displaying two BMP characters and one character each from Planes 1-3, using the Last Resort font.

Possible solutions would be to A) remove the empty Format 4 subtable; or B) make the Format 4 subtable functional for all characters in the BMP.

NB This issue should also affect the High-Efficiency font.

LastResort_BMP_test
.

Meta table dlng and slng fields should list script tags not language tags

The meta table dlng and slng fields each give a comma-separated list of language tags (ca,cs,cy,da,de,en,es,fi,fr,hr,hu,id,is,it,lt,ms,mt,nb,nl,nn,pl,pt,ro,sk,sv,tr,vi for dlng; and 240 language tags for slng). However the specification for the meta table states that ScriptLangTag values use a modification of the BCP 47 syntax: a script subtag is mandatory and other subtags are optional. It further states that "it is anticipated that most tags used in 'dlng' and 'slng' metadata declarations will consist only of a script subtag".

Therefore, the lists of language tags should be changed to use lists of script tags (e.g. Latn, Cyrl, Hani, etc.).

Version font files in releases or include in archive

Nice prompt update, but it would be nice to have the font files included in the versioned archive, or have individually versioned font files in the releases, so that processes that depend on version changes will download the updated font files, rather than using the previously cached files, which turned out to be 15.000, after packaging and installing! ;^>

Problem with font priority

(This is not a font bug per se, but I run into this using openSUSE Tumbleweed, so it might be good to document for future)

After installing last-resort-font on my system I noticed that Chrome and many other apps (except xterm for some reason) started to render 𝐳 (U+1D433) character using last-resort-font, this can be confirmed with:

sisyphus ~ > fc-list ':charset=1D433'
/usr/share/fonts/truetype/STIXGeneral-Regular.otf: STIXGeneral:style=Regular
/usr/share/fonts/winfonts/cambria.ttc: Cambria:style=Regular
/usr/share/fonts/truetype/LastResortHE-Regular.ttf: Last Resort High\-Efficiency:style=Regular <--- HERE
/usr/share/fonts/truetype/STIXGeneral-Bold.otf: STIXGeneral:style=Bold
/usr/share/fonts/truetype/DejaVuSerifCondensed-Bold.ttf: DejaVu Serif,DejaVu Serif Condensed:style=CondensedBold,Bold
/usr/share/fonts/truetype/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold
/usr/share/fonts/winfonts/cambria.ttc: Cambria Math:style=Regular
/usr/share/fonts/truetype/DejaVuMathTeXGyre.ttf: DejaVu Math TeX Gyre:style=Regular

So, it's matching last-resort-font before looking up other fonts where the glyph actually exists. I looked up in the fontconfig documentation, but I couldn't find a way to decrease a font's priority to be last. If you have any ideas, it'd be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.