Skip to content

Instantly share code, notes, and snippets.

@jtanx
jtanx / gist:e98d78381eb731e71ca2
Created July 4, 2015 02:24
List of results from setlocale(LC_ALL, "")
Afrikaans_South Africa.1252
Albanian_Albania.1250
Alsatian_France.1252
Arabic_Algeria.1256
Arabic_Bahrain.1256
Arabic_Egypt.1256
Arabic_Iraq.1256
Arabic_Jordan.1256
Arabic_Kuwait.1256
Arabic_Lebanon.1256
@jtanx
jtanx / gist:af507cf13eb1cb705836
Created August 9, 2014 02:30
FF build PR #1616+a0126eda4d27b83da27b63fc90bb4dfcb5a9fff3
bootstrap: running: libtoolize --quiet
bootstrap: running: git clone --depth 365 'git://git.sv.gnu.org/gnulib' 'gnulib'
Cloning into 'gnulib'...
Checking out files: 1% (148/9274)
Checking out files: 2% (186/9274)
Checking out files: 3% (279/9274)
Checking out files: 3% (339/9274)
Checking out files: 4% (371/9274)
Checking out files: 5% (464/9274)
Checking out files: 5% (537/9274)
@jtanx
jtanx / multibytecmap4-1.md
Created December 17, 2013 06:59
Looking up non-Unicode format 4 TrueType character maps (cmap; ShiftJIS, PRC, Big5, Wansung, Johab)

Reference material: http://www.microsoft.com/typography/otspec/cmap.htm

Convert Unicode string using the appropriate encoding (e.g ShiftJIS). For each unicode code point, store the corresponding multibyte character sequence in little endian format.

E.g: Suppose you converted the character 'コ' (U+30B3) using ShiftJIS encoding. This would give the bytes [0x83, 0x52]. Store the result in a WORD (or larger sized variable) to give 0x8352 as the value. Use this value to lookup the glyph id from the cmap.

Conversion between charsets may be achieved through a number of ways, such as by using ICU. On Windows, the Unicode and Character set functions, such as WideChartoMultiByte may be used instead. Depending on the language, there may be in-built character set conversion utilities.

@jtanx
jtanx / Calculating xAvgCharwidth.md
Created November 30, 2013 05:55
Calculating xAvgCharWidth for the OS/2 font table.

For OS/2 table versions >= 3, take the sum of the advancement widths (from the hmtx table) of each glyph, iff the advancement width is greater than zero. Do integer division of this sum by the number of glyphs that had an advancement width > 0.

For versions < 3, follow a similar procedure, but weight according to: http://www.microsoft.com/typography/otspec/os2ver2.htm#acw, and only consider lowercase latin characters for the average.