///|
/// Get vertical origin Y for a glyph (design units)
pub fn TTFont::vert_origin_y(self : TTFont, glyph_id : Int) -> Int {
  match self.vorg {
    Some(vorg) =>
      match vorg.vert_origins.get(glyph_id) {
        Some(y) => y
        None => vorg.default_vert_origin_y
      }
    None => self.ascent
  }
}

///|
/// Parse VORG table: returns VorgData with default origin and per-glyph overrides
pub fn parse_vorg(reader : BinaryReader, offset : Int) -> VorgData {
  let default_vert_origin_y = reader.peek_int16_at(offset + 4)
  let num_metrics = reader.peek_uint16_at(offset + 6)
  let vert_origins : Map[Int, Int] = {}
  for i = 0; i < num_metrics; i = i + 1 {
    let rec_offset = offset + 8 + i * 4
    let glyph_index = reader.peek_uint16_at(rec_offset)
    let vert_origin_y = reader.peek_int16_at(rec_offset + 2)
    vert_origins[glyph_index] = vert_origin_y
  }
  { default_vert_origin_y, vert_origins }
}