Giter VIP home page Giter VIP logo

pixel_font's Introduction

PixelFont

GitHub Workflow Status Coverage Status

"PixelFont" is an all-in-one tool for creating TrueType outline fonts from bitmap glyph data.

"PixelFont" implements a subset of the OpenType specification, purely in Elixir programming language.

Features

  • Builds full-featured font files which can be used in serious places.
  • Generates optimal pixelated TrueType outlines based on 1bpp bitmap images.
  • Supports creating fonts with OpenType advanced typographic features, namely GPOS and GSUB.
  • Provides DSL and data structures for defining...
    • Font metadata,
    • TrueType outline glyphs based on bitmap image,
    • Composite glyphs (maximum depth of 1 for now),
    • And a subset of GPOS and GSUB lookups.

If you are in doubt, see The NeoDunggeunmo Project.

Future Goals

  • Write some documentations and tests.
  • Implement more GPOS and GSUB lookup subtables.
  • Wrap all the struct craziness with Elixir DSL. Specifically, provide user experience somewhat similar to using GUI-based font development software... via Elixir DSL. (Good luck!)

License

Copyright 2024 Eunbin Jeong (Dalgona.) <[email protected]>

This project is still under early development, but its source codes are released under the MIT license. See LICENSE file for the full text.

OpenType is a registered trademark of Microsoft Corporation.

TrueType is a trademark of Apple Inc., registered in the United States and other countries.

pixel_font's People

Contributors

dalgona 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

Watchers

 avatar  avatar  avatar

pixel_font's Issues

Implement GPOS/GSUB Lookup Tables

Part of this description was taken from neodgm/neodgm#12.

GPOS

  • Lookup Type 1: Single Adjustment Positioning
    • Format 1: Single Positioning Value
    • Format 2: Array of Positioning Values
  • Lookup Type 2: Pair Adjustment Positioning
    • Format 1: Adjustments for Glyph Pairs
    • Format 2: Class Pair Adjustment
  • Lookup Type 3: Cursive Attachment Positioning
    • Format 1: Cursive Attachment
  • Lookup Type 4: Mark-to-Base Attachment Positioning
    • Format 1: Mark-to-Base Attachment Point
  • Lookup Type 5: Mark-to-Ligature Attachment Positioning
    • Format 1: Mark-to-Ligature Attachment
  • Lookup Type 6: Mark-to-Mark Attachment Positioning
    • Format 1: Mark-to-Mark Attachment
  • Lookup Type 7: Contextual Positioning
    • Format 1: Simple Glyph Contexts
    • Format 2: Class-based Glyph Contexts
    • Format 3: Coverage-based Glyph Contexts
  • Lookup Type 8: Chaining Contextual Positioning
    • Format 1: Simple Glyph Contexts
    • Format 2: Class-based Glyph Contexts
    • Format 3: Coverage-based Glyph Contexts
  • Lookup Type 9: Extension Positioning
    • Format 1

Shared Tables

  • Value Record
  • Anchor Table
  • Mark Array Table

GSUB

  • Lookup Type 1: Single Substitution
    • Format 1: Many to one delta
    • Format 2: One to one
  • Lookup Type 2: Multiple Substitution
    • Format 1
  • Lookup Type 3: Alternate Substitution
    • Format 1
  • Lookup Type 4: Ligature Substitution
    • Format 1
  • Lookup Type 5: Contextual Substitution
    • Format 1: Simple Glyph Contexts
    • Format 2: Class-based Glyph Contexts
    • Format 3: Coverage-based Glyph Contexts
  • Lookup Type 6: Chained Contexts Substitution
    • Format 1: Simple Glyph Contexts
    • Format 2: Class-based Glyph Contexts
    • Format 3: Coverage-based Glyph Contexts
  • Lookup Type 7: Extension Substitution
    • Format 1
  • Lookup Type 8: Reverse Chaining Contextual Single Substitution
    • Format 1

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.