All Projects → LayoutFarm → Typography

LayoutFarm / Typography

Licence: other
C# Font Reader (TrueType / OpenType / OpenFont / CFF / woff / woff2) , Glyphs Layout and Rendering

Projects that are alternatives of or similar to Typography

Awesome Typography
✏︎ Curated list about digital typography 🔥
Stars: ✭ 947 (+284.96%)
Mutual labels:  typography, opentype, ttf, otf, emoji, webfonts
font-v
Font version string reporting and modification library + executable tool
Stars: ✭ 15 (-93.9%)
Mutual labels:  font, opentype, ttf, otf
Adobe Variable Font Prototype
Variable font example in OpenType-CFF2 & TrueType formats
Stars: ✭ 116 (-52.85%)
Mutual labels:  font, opentype, otf
bitsnpicas
Bits'N'Picas - Bitmap & Emoji Font Creation & Conversion Tools
Stars: ✭ 171 (-30.49%)
Mutual labels:  emoji, font, opentype
Opentype.js
Read and write OpenType fonts using JavaScript.
Stars: ✭ 3,393 (+1279.27%)
Mutual labels:  font, opentype, otf
Fonts
✒️ Font loading and drawing library.
Stars: ✭ 135 (-45.12%)
Mutual labels:  netstandard, font, opentype
beatrix
A tool to chop off useless fonts glyphs and convert TTF/OTF into WOFF & WOFF2
Stars: ✭ 22 (-91.06%)
Mutual labels:  webfonts, ttf, otf
pixel font
All-in-one tool for creating TrueType outline fonts from bitmap glyph data, purely written in Elixir.
Stars: ✭ 16 (-93.5%)
Mutual labels:  opentype, ttf, otf
Acy-Font
自制手写字体。A hand-writing font set.
Stars: ✭ 20 (-91.87%)
Mutual labels:  font, ttf, otf
Codeface
Typefaces for source code beautification
Stars: ✭ 5,612 (+2181.3%)
Mutual labels:  font, ttf, otf
Ttf Parser
A high-level, safe, zero-allocation TrueType font parser.
Stars: ✭ 221 (-10.16%)
Mutual labels:  opentype, ttf, otf
emojione-color
OpenType-SVG font of EmojiOne 2.3
Stars: ✭ 112 (-54.47%)
Mutual labels:  emoji, font, opentype
Source Han Sans
Source Han Sans | 思源黑体 | 思源黑體 | 思源黑體 香港 | 源ノ角ゴシック | 본고딕
Stars: ✭ 10,181 (+4038.62%)
Mutual labels:  font, opentype, otf
Haack
Hæck
Stars: ✭ 142 (-42.28%)
Mutual labels:  font, ttf, otf
chiron-sans-hk
昭源黑體:現代筆形風格,平衡標準字形和印刷體慣用筆形的免費開源黑體字型
Stars: ✭ 131 (-46.75%)
Mutual labels:  font, opentype, otf
fontfacegen-webpack-plugin
A plugin for webpack that allows you to convert .ttf and .otf files into various other font formats such as .eot, .ttf, .svg, .woff and .woff2 using the existing NPM package fontfacegen.
Stars: ✭ 20 (-91.87%)
Mutual labels:  font, ttf, otf
apple-emoji-linux
Apple Color Emoji for Linux
Stars: ✭ 392 (+59.35%)
Mutual labels:  emoji, font, ttf
FontRegister
FontRegister is a small Windows utility to install fonts and/or repair the font registry via commandline.
Stars: ✭ 17 (-93.09%)
Mutual labels:  font, ttf, otf
Source Han Serif
Source Han Serif | 思源宋体 | 思源宋體 | 思源宋體 香港 | 源ノ明朝 | 본명조
Stars: ✭ 5,920 (+2306.5%)
Mutual labels:  font, opentype, otf
Linearicons
Linearicons is the highest quality set of line icons, matching with minimalist UI designs in iOS.
Stars: ✭ 64 (-73.98%)
Mutual labels:  font, typography, webfonts

Typography, this image was rendered with this library, in subpixel rendering mode

Pure C# Font Reader, Glyph Layout and Rendering.

While developing the PixelFarm Rendering library,

I figured that the way to render a glyph from a font may be useful for other libraries.

So, I spinned off the way to render a glyph from a font to here, the Typography library.

typography_thanamas

Sov_Thanamas font from https://www.f0nt.com/release/sov_thanamas/


Cross Platform

The Typography library is a cross-platform library and does NOT need the PixelFarm Rendering library.

You can use the library to read font files (.ttf, .otf, .ttc, .otc, .woff, .woff2) and

  1. Access all information inside the font.
  2. Layout the font glyphs according to the OpenFont specification.

The core modules (Typography.OpenFont, Typography.GlyphLayout) do NOT provide a glyph rendering implementation. But as you are able to access and read all glyphs, it is easy to render them provided the exact position of each glyph.

Below are some screenshots of projects that use Typography to read each glyph from font files and render using their rendering engine.

sum2

1. MatterHackers/agg-sharp, 2. CSharpMath/SkiaSharp, Xamarin.Forms, 3. emoji.wpf/wpf, 4. zwcloud's ImGui/GL,GLES


Project arrangement: The purpose of each project

The core modules are Typography.OpenFont and Typography.GlyphLayout.

Typography.OpenFont

  • This project is the core and does not depend on other projects.
  • This project contains a font reader that can read files implementing Open Font Format (ISO/IEC 14496-22:2015 and Microsoft OpenType Specification) or Web Open Font Format (either WOFF 1.0 or 2.0)
  • The OpenType GSUB, GPOS layout mechanism is in here but a more easy-to-use interface is provided in Typography.GlyphLayout below.
  • No Visual/Graphics Rendering Here

Typography.GlyphLayout

Since the GlyphLayout engine is not stable and quite complex, I separated this from the OpenFont core project.

  • This project invokes OpenType Layout Engine/Mechanism (esp. GSUB, GPOS) inside Typography.OpenFont
  • The engine converts a string to a list of glyph indexes, then substitutes glyphs and places them into proper positions with respect to the provided settings, eg Script/Languague Setup, or Advanced GSUB/GPOS on Emoji
  • No Visual/Graphics Rendering Here

sum4

1) CoreModules, 2) Typography.One: a more easy-to-use than core module

See more detail about the 2 modules and others here : https://github.com/LayoutFarm/Typography/issues/99


PixelFarm's Typography

Since the core library does not provide a glyph rendering implementation, You can learn how to do it from the example repositories above, or you may learn it from my implementation => PixelFarm.Typography.

PixelFarm.Typography links the core Typography library to the PixelFarm Rendering library. You can learn how to implement string drawing, how to implement text-layout services, and how to cache glyph shapes, so you can apply this to your own library.

sum3

HtmlRenderer on GLES2 surface, text are rendered with the PixelFarm.Typography


License

The project is based on multiple open-sourced projects (listed below) all using permissive licenses.

A license for a whole project is MIT.

But if you copy source code directly, please check each source file's header for the licensing info if available.

Font

Apache2, 2014-2016, Samuel Carlsson, Big thanks for https://github.com/vidstige/NRasterizer

MIT, 2015, Michael Popoloski, https://github.com/MikePopoloski/SharpFont

The FreeType Project LICENSE (3-clauses BSD style),2003-2016, David Turner, Robert Wilhelm, and Werner Lemberg and others, https://www.freetype.org/

Apache2, 2018, Apache/PDFBox Authors, https://github.com/apache/pdfbox

Apache2, 2020, Adobe Font Development Kit for OpenType (AFDKO), https://github.com/adobe-type-tools/afdko

Text Processing

Unicode (BSD style), 2020, UNICODE, INC, https://www.unicode.org/license.html

Apache2, 2014 , Muhammad Tayyab Akram, https://sheenbidi.codeplex.com/ , https://github.com/Tehreer

Geometry

BSD, 2002-2005, Maxim Shemanarev, Anti-Grain Geometry - Version 2.4 http://www.antigrain.com

BSD, 2007-2014, Lars Brubaker, agg-sharp, https://github.com/MatterHackers/agg-sharp

MIT, 2016, Viktor Chlumsky, https://github.com/Chlumsky/msdfgen

BSD, 2009-2010, Poly2Tri Contributors, https://github.com/PaintLab/poly2tri-cs

Apache2, 2016-2017, WinterDev, https://github.com/PaintLab/PixelFarm

Platforms

MIT, 2015-2015, Xamarin, Inc., https://github.com/mono/SkiaSharp

MIT, 2006-2009, Stefanos Apostolopoulos and other Open Tool Kit Contributors, https://github.com/opentk/opentk

MIT, 2013, Antonie Blom, https://github.com/andykorth/Pencil.Gaming

MIT, 2004, 2007, Novell Inc., for System.Drawing

Unpack, Zlib,Brotli

MIT, 2018, SharpZipLib, https://github.com/icsharpcode/SharpZipLib

MIT, 2009, 2010, 2013-2016 by the Brotli Authors., https://github.com/google/brotli

MIT, 2017, brezza92 (C# port from original code, by hand), https://github.com/brezza92/brotli

MIT, 2019, master131, https://github.com/master131/BrotliSharpLib

Demo

MIT, 2017, Zou Wei, https://github.com/zwcloud, see more Zou Wei's GUI works at here and here

MIT, 2020, brezza92 (https://github.com/brezza92), MathML layout engine

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].