keyman icon indicating copy to clipboard operation
keyman copied to clipboard

spec(common): KMX+ binary format supporting LDML

Open srl295 opened this issue 3 years ago • 3 comments

Introduction

Document an optimized binary format for use by the process_event #5015 and other consumers of LDML data. It will be written into the KMX binary file.

Goals

  • new section is 64-bit aligned
  • new section and header uses 64-bit offsets

implementation

  • kmx_file.h - version16, kmx+ file header
  • kmx+ optimized binary format
  • in-memory structures for LDML keyboard

other

  • json or xml streamers (dev use)
  • binary streamer <-> into .kmx file (prod)
  • use bson?

srl295 avatar Aug 05 '22 17:08 srl295

@mcdurdin simplifying starting assumptions if you want:

  • could skip deduplicating strings
  • could always use extend=1 in keys (i.e. always burn a string for each key)

srl295 avatar Aug 08 '22 22:08 srl295

Changes:

  • sections on 128 bit (0x10 byte) boundary for convenience
  • added 4 byte reserved/padding on keys table so keys start on 128 bit boundary, and also for strs table

srl295 avatar Aug 12 '22 22:08 srl295

Binary format done, minor tweaks but validated and useful.

srl295 avatar Sep 06 '22 23:09 srl295