Skip to content
win edited this page Apr 22, 2018 · 62 revisions

Welcome to the Typography wiki!

good read:

http://www.antigrain.com/research/font_rasterization/

http://blog.typekit.com/2010/12/08/type-rendering-font-outlines-and-file-formats/

https://www.microsoft.com/typography/developers/opentype/default.htm

https://maxradi.us/documents/uniscribe/

https://blogs.msdn.microsoft.com/fontblog/2005/11/08/where-does-96-dpi-come-from-in-windows/

https://github.com/deanhume/typography

https://www.tug.org/TUGboat/tb24-3/lemberg.pdf

https://medium.com/@tiro/https-medium-com-tiro-introducing-opentype-variable-fonts-12ba6cd2369#.4q4al52ar

https://www.microsoft.com/en-us/Typography/FontVariationsAnnouncement.aspx

http://v1.jontangerine.com/log/2007/10/smoothing-out-the-creases-in-web-fonts

http://www.creativebloq.com/typography/what-is-typography-123652

http://www.creativebloq.com/graphic-design-tips/best-free-fonts-for-designers-1233380

https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/how-to-obtain-font-metrics


opentype

http://www.makeuseof.com/tag/otf-vs-ttf-fonts-one-better/

http://opentypecookbook.com/index.html

https://www.iro.umontreal.ca/~boyer/typophile/doc/lookups.html

https://msdn.microsoft.com/en-us/library/windows/desktop/dd374094(v=vs.85).aspx

https://www.typotheque.com/articles/hinting

https://simoncozens.github.io/fonts-and-layout/opentype.html


SVG: text

https://www.w3.org/TR/SVG2/text.html


Pomax' CFF article

https://pomax.github.io/CFF-glyphlet-fonts/


triangulation

  • https://en.wikipedia.org/wiki/Delaunay_triangulation

  • Sweep-line algorithm for constrained Delaunay triangulation Authors: V. Domiter Department of Computer Science, Faculty of Electrical Engineering and Computer Sciences, University of Maribor, SI 2000 Maribor, Slovenia B. Zalik Department of Computer Science, Faculty of Electrical Engineering and Computer Sciences, University of Maribor, SI 2000 Maribor, Slovenia


git rebase

You rebase as usual.

git fetch
git checkout -b my-rebased-branch-name` # create new branch to avoid force pushing
git rebase upstream/master # rebase, this assumes you've got upstream remote setup.

Then you can push the branch as usual. :-)


others

http://typedrawers.com

http://kanji-database.sourceforge.net/fonts/opentype.html

http://ilovetypography.com/


true type hinting

http://www.truetype-typography.com/tthints.htm

http://blog.typekit.com/2010/12/14/a-closer-look-at-truetype-hinting/

https://www.microsoft.com/typography/hinting/tutorial.htm

https://www.microsoft.com/typography/otspec/ttinst.htm


fontTools note

fonttools


text shaping

http://www.panl10n.net/Presentations/Cambodia/Pema/LocalizationofLinux(Bhutan).pdf


I18N

http://chinese-characters.net/default.asp?roomx=FAQ

https://www.hebrewsyntax.org/bbh2/bbh2_supplement.pdf

.NET's Graphics.DrawString() VS TextRenderer.DrawText()

https://stackoverflow.com/questions/8283631/graphics-drawstring-vs-textrenderer-drawtextwhich-can-deliver-better-quality


Note on Century font

test_century

pic 1: '2' glyph, Century font, Gdi+ version

test_century

pic 2: Century font, 240 pt, Notepad [1] vs Typography [2], see red rectangle, this is a characteristic of this glyph (starts with OFF-CURVE point and ends with OFF-CURVE point)


old swapping bit code static ushort SwapBytes(ushort x) { return (ushort)((ushort)((x & 0xff) << 8) | ((x >> 8) & 0xff)); }

    static uint SwapBytes(uint x)
    {
        return ((x & 0x000000ff) << 24) +
            ((x & 0x0000ff00) << 8) +
            ((x & 0x00ff0000) >> 8) +
            ((x & 0xff000000) >> 24);
    }

    static ulong SwapBytes(ulong value)
    {
        ulong uvalue = value;
        ulong swapped =
            ((0x00000000000000FF) & (uvalue >> 56)
            | (0x000000000000FF00) & (uvalue >> 40)
            | (0x0000000000FF0000) & (uvalue >> 24)
            | (0x00000000FF000000) & (uvalue >> 8)
            | (0x000000FF00000000) & (uvalue << 8)
            | (0x0000FF0000000000) & (uvalue << 24)
            | (0x00FF000000000000) & (uvalue << 40)
            | (0xFF00000000000000) & (uvalue << 56));
        return swapped;
    }

Clone this wiki locally