Skip to content
Snippets Groups Projects
  1. May 01, 2021
  2. Apr 26, 2020
    • Dzuk's avatar
      Removal of TrueType ligature options · 3b819b9f
      Dzuk authored
      - Mention of TrueType ligatures has been removed throughout documentation and software because they haven't actually been supported by forc and I probably don't plan on supporting them at the moment.
      - Improved readme with more detailed stability information.
      3b819b9f
  3. Jan 28, 2020
  4. Sep 05, 2019
  5. Aug 30, 2019
    • Dzuk's avatar
      head.checkSumAdjustment improvements · 44da04be
      Dzuk authored
      forgot that there's an extra step to creating the checksum~
      44da04be
    • Dzuk's avatar
      Some more bytes stuff, head.checkSumAdjustment · 2d82d311
      Dzuk authored
      - the bytes building process of the font now includes multiple passes, including the generation of the (hopefully) correct checksum for head.checkSumAdjustment.
      - changed the format of the name table to 0. (at least for the moment)
      - made cmap subtable 12 more accurate (but cmap in general is not fixed)
      - some slightly tidier cmap stuff
      - Some improved comments and docs
      2d82d311
  6. Aug 29, 2019
    • Dzuk's avatar
      More cleanup! · b17b3917
      Dzuk authored
      Forgot to remove my engineered mistake for testing an internal test involving maxp.numGlyphs.
      b17b3917
    • Dzuk's avatar
      Some cleanup · 50390ccc
      Dzuk authored
      - Improved test print readout.
      - Removed lingering test prints from the last build
      50390ccc
    • Dzuk's avatar
      name table - an attempt was made · 07fd6173
      Dzuk authored
      - A (failed) attempt was made at making complete name table bytes compilation. Will need more work in the future.
      - Streamlined data types for platform encoding IDs.
      - Fixed long-inaccurate documentation for transform.bytes.generateOffsets.
      - Improved readme
      07fd6173
    • Dzuk's avatar
      Accurate TableRecord lengths · 9c84110e
      Dzuk authored
      TableRecord was being fed the padded length of tables, which was not accurate to the TrueType standard; they should have the unpadded length.
      
      transform.bytes.outputTableBytes has been altered to handle the data output required by the previous thing. It's been renamed to 'outputTableBytes' to reflect it's new functionality.
      9c84110e
    • Dzuk's avatar
      Structural improvements, Font self-testing · bd615c87
      Dzuk authored
      - glyphs has been separated into glyph (data types governing glyphs) and glyphProc (the bunch of functions dedicated to processing glyphs)
      - table names have been moved out of tables and into the font assembly process instead. The tableName field in table classes has been removed. This means that table data is now completely consistent again with their bytes representation.
      - The font now self-tests to ensure various components of itself agree with other components within the font. It currently doesn't halt font creation, it will just give a warning.
      bd615c87
  7. Aug 28, 2019
    • Dzuk's avatar
      cmap improvements + some other stuff · 1fdbb96c
      Dzuk authored
      - more cmap subtable work, including initial full cmap subtable format 12 bytes export and some small gains on subtable format 4.
      - slightly more post table work
      
      - 'tables.support' renamed to 'tables.common'
      - Removed some unecessary test prints from the previous commit
      - Changed some code back that was omitted from the previous commits for the sake of making sure offset generation was actually working
      1fdbb96c
    • Dzuk's avatar
      generateOffsets fix · 7f73bdab
      Dzuk authored
      - transform.bytes.generateOffsets now has correct math!
      - placeholder table exports now export some bytes instead of no bytes in case that causes problems in the interim.
      7f73bdab
  8. Aug 27, 2019
    • Dzuk's avatar
      Properly padded tables · fd5cef39
      Dzuk authored
      - new function - data.padTableBytes, for padding table bytes output properly according to the TrueType spec.
      - All final tables output now uses data.padTableBytes if they have bytes output.
      - 'data.calculateChecksum' renamed to 'data.calculateTableChecksum'.
      - Some improved comments.
      fd5cef39
    • Dzuk's avatar
      Error message fix in data.Tag · 31beb62e
      Dzuk authored
      Fixed an incorrect error message within data.Tag.
      31beb62e
  9. Aug 15, 2019
    • Dzuk's avatar
      Binary stuff 4 (tableRecords) · f155465f
      Dzuk authored
      - tableRecords are now compiled to bytes and added in the font bytes compilation.
      - Fixed a bug in tableRecord's toBytes function where variables were being packed as UInt16s instead of UInt32s.
      - Some progress in generating bytes for the hmtx table. Not complete yet.
      - Some documentation and comment improvements
      - tableRecord can now repr itself to make examining core table offsets easier.
      f155465f
    • Dzuk's avatar
      Binary stuff 3 (CBx + SVGinOT improvements, new development options) · 732d994a
      Dzuk authored
      CBx and SVG binary output via forc's internal compiler now creates files that don't cause errors in Python, but are still invalid as OpenType files.
      
      - Initial CBx bytes compilation code has been tested and improved.
      - EBx metrics subtables can now generate fully formed bytes output.
      - New --no-test flag disables the testing phase of compilation to make development easier.
      - Fixed a blind spot in the input validation for data.Tag.
      732d994a
  10. Aug 14, 2019
    • Dzuk's avatar
      Basic binary font structure 2 · cf01b5ad
      Dzuk authored
      the forc compiler can now export a file made of bytes that calls itself a TrueType font file. It's not valid or working, but we're at that stage now.
      
      - transform.bytes.generateOffsets now seems to work properly. There was a bunch of previously untested code that just didn't work.
      - Some more error checking code has been placed around various parts related to overall bytes conversion.
      - Various font tables produce blank, placeholder bytes objects for now for their toBytes functions just to make everything work atm.
      cf01b5ad
  11. Jun 25, 2019
    • Dzuk's avatar
      Basic binary font structure 1 (so many fixes) · ae74954f
      Dzuk authored
      I'm finally trying to build a binary font in the command line to see what happens. A bunch of changes have come from it:
      
      (many more fixes needed to go)
      (does not produce a working binary compilation routine yet!)
      
      - offset table generation
      - transform.bytes.calculateChecksums to generate checksums.
      - every table class now names itself as a field so it can be understood in the generation of over-arching font structures.
      - tag data type now has __lt__()
      - glyphOrder is no longer a table in a font class because it technically isn't a table. Its presence is no longer printed during font assembly either.
      - fixed a bug where data.Fixed's int representation doesn't work because the function didn't have self as an input.
      - bug where there wasn't sufficient information to output data.Tag's bytes representation has been fixed.
      - bugs where various tables' toBytes input data were incorrectly spelled have been fixed.
      - bugs where various byte/int lengths were wrong in various tables' toBytes functions have been fixed.
      - bug where data.VFixed couldn't output an int has been fixed.
      ae74954f
  12. Jun 24, 2019
    • Dzuk's avatar
      toBytes testing 1 · 3c1d3cf0
      Dzuk authored
      toBytes has been tested for the first time (not as working, just to see what happens):
      
      - 'compile.binary' renamed to 'compile.forc'.
      - some code that was wonky in compile.forc has been adjusted to work properly
      - font.toBytes now returns a placeholder bytes object.
      3c1d3cf0
    • Dzuk's avatar
      cmap bytes stuff · 78afbbcd
      Dzuk authored
      - cmap's base table is now possibly capable of compiling itself in bytes
      - some inroads have been made with cmap subtable byte compilation
      - transform.bytes.generateOffsets now uses an int instead of a string as an input to get the bit length of the offsets that are generated by it.
      78afbbcd
  13. Jun 08, 2019
    • Dzuk's avatar
      Preparations and research (mostly cmap) · 711ee723
      Dzuk authored
      - A few extra comments here and there
      - Some beginnings of toBytes() functions in other table-building classes
      - Some more research and links
      711ee723
  14. Jun 07, 2019
    • Dzuk's avatar
      Quick comment fix for generateOffsets · 006c4229
      Dzuk authored
      006c4229
    • Dzuk's avatar
      generateOffsets Improvements · 50a1870b
      Dzuk authored
      - generateOffsets can now generate long (32bit) or short (16bit) offsets 
      depending on what is called for.
      - pre-existing uses of generateOffsets have been edited to work with 
      this.
      50a1870b
    • Dzuk's avatar
      Most class names converted to PascalCase · 0aa9511e
      Dzuk authored
      Generally to make the code a lot more readable and clearer. (Also this 
      conforms to Python's writing style guidelines)
      
      Whoops.
      
      This isnt the case however when it comes to lowercase font table names, 
      they're staying the same. (This is because font table names are case 
      sensitive. I'll try to think of a way around it in the future)
      0aa9511e
    • Dzuk's avatar
      Almost-complete WIP sbix to bytes, bytes offsets generator · be8e0683
      Dzuk authored
      - New module transform.bytes for common bytes function.
      - New function transform.bytes.generateOffsets for generating blobs of 
      bytes data and accompanying offsets.
      - img class now has a getBytes() function which will return the bytes of 
      it's image.
      - almost all parts of the sbix table can generate a complete bytes 
      representation.
      - Fixed an error where the last bit of tables.sbix.flags was  when it 
      should be the first. (This was a holdover from little-endian 
      representation in TTX)
      - added useful code comments about sbix data.
      be8e0683
    • Dzuk's avatar
      Documentation and error improvements · 85836734
      Dzuk authored
      - Some old comments left lying around have been improved
      - Various existing comments and class/function documentation have been improved.
      - Fixed an error in manifest documentation relating to created dates.
      - Howto doc now includes a short section on the compiler build flag.
      - Unenforced SVG element checking errors will now suggest the user uses the -nusc build flag if they don't want the exceptions they bring up.
      85836734
  15. May 24, 2019
    • Dzuk's avatar
      Lots of small incremental improvements · 0fc7fe4f
      Dzuk authored
      - tables.gasp is now formed much more properly and has complete (at 
      least hypothetically) toBytes() functions.
      - tables.cbdt now has more accurate data and toBytes()
      - tables.cmap header version no longer hardcoded in TTX. (hardcoded as 
      class variable instead)
      - cmap header now has a toBytes function.
      - font.py's init now creates the table in a 'try' to provide nicer error 
      messaging.
      - tables.gsub has more accurate comments on how to achieve full bytes 
      output.
      - redundant TTX comments have been removed.
      - more struct imports have been added to tables as needed.
      - sbix has some initial bytes stuff.
      - data.tag now has a toBytes function, and all binary packing involving 
      tags now use .toBytes() instead of int().
      - tables.svg has some initial bytes code.
      - more TODOs in the code have been added.
      0fc7fe4f
    • Dzuk's avatar
      Safer vFixed, more accurate CBLC · 60421b3d
      Dzuk authored
      - vFixed is now safer to use.
      - CBLC has been made to be more accurate in both naming, data types and 
      structure.
      60421b3d
  16. May 22, 2019
    • Dzuk's avatar
      WIP font bytes code · 9f4978cf
      Dzuk authored
      - Just added some WIP code about bytes compilation while I was thinking 
      about it.
      - Renamed another instance where the internal compiler is called 
      'binary' to 'forc'
      9f4978cf
    • Dzuk's avatar
      Improved terminology · dd863f4a
      Dzuk authored
      - Various uses of 'binary' changed to 'bytes' or something else.
      - changed the name of 'binary' compiler option to 'forc'.
      dd863f4a
    • Dzuk's avatar
      improved bFlags, now with binary output · 512da33e
      Dzuk authored
      - bFlags code has been sunstantially improved.
      - bFlags can now output to bytes.
      - all toBinary() functions have been renamed to toBytes() to be 
      consistent with what they actually output.
      - accidental leftover test print from last commit has been removed.
      512da33e
    • Dzuk's avatar
      bFlags binary output 1 · 7653cc80
      Dzuk authored
      - tables that use bFlags now use struct.pack() in the appropriate way 
      when bFlags.toBinary() is a working function.
      7653cc80
    • Dzuk's avatar
      LONGDATETIME (longDateTime) data format · 2217b08c
      Dzuk authored
      - data.longDateTime is a class that represets the LONGDATETIME format in 
      a font, and fulfills needs both by binary font compilation and TTX font 
      compilation.
      
      - all fields that require LONGDATETIME are now represented by 
      longDateTime.
      
      - metadata.created in the manifest is now validated and converted to 
      longDateTime before being used in a font table.
      2217b08c
    • Dzuk's avatar
      New Fixed type for version numbers (not like the prev. fixed type) · 469e83ae
      Dzuk authored
      - hvFixed renamed to 'fixed, as it's actually the 'normal' fixed type.
      
      - new vFixed type, to represent certain kinds of version table data that 
      are represented as fixed numbers, but not the *normal* fixed numbers >:[
      
      - Added WIP binary compilation to various tables, improved table classes 
      in general.
      
      - Some accidental leftover code where GSUB's version was hard-coded in 
      the TTX compilation has been fixed.
      469e83ae
  17. May 21, 2019
    • Dzuk's avatar
      Some extra table data improvements · 7ce52252
      Dzuk authored
      7ce52252
    • Dzuk's avatar
      hvFixed data type · 8ddad2d6
      Dzuk authored
      - New data class 'hvFixed' to represent specific types of version 
      numbers.
      
      - bFlags now checks whether the user has inputted a correct number of 
      bits (can only be 8, 16 or 32).
      
      - Various other forms of data entry in font tables have been improved.
      8ddad2d6