public AnchorTable_val GetLigatureAnchorTable_val(uint i) { AnchorTable_val at = null; uint offset = GetLigatureAnchorOffset(i); if (offset != 0) { at = new AnchorTable_val(m_offsetLigatureAttach + offset, m_bufTable); } return at; }
public bool Validate(Validator v, string sIdentity, OTTable table) { bool bRet = true; bRet &= ((val_GPOS)table).ValidateNoOverlap(m_offsetMarkArray, CalcLength(), v, sIdentity, table.GetTag()); // check that the Mark Record array doesn't extend past end of table if (m_offsetMarkArray + (uint)FieldOffsets.MarkRecordArray + MarkCount*4 > m_bufTable.GetLength()) { v.Error(T.T_NULL, E.GPOS_E_Array_pastEOT, table.m_tag, sIdentity + ", MarkRecord"); bRet = false; } // check each MarkRecord for (uint i=0; i<MarkCount; i++) { MarkRecord mr = GetMarkRecord(i); if (m_offsetMarkArray + mr.MarkAnchorOffset > m_bufTable.GetLength()) { v.Error(T.T_NULL, E.GPOS_E_Offset_PastEOT, table.m_tag, sIdentity + ", MarkRecord[" + i + "]"); bRet = false; } AnchorTable_val at = new AnchorTable_val(m_offsetMarkArray + mr.MarkAnchorOffset, m_bufTable); bRet &= at.Validate(v, sIdentity + ", MarkRecord[" + i + "], AnchorTable", table); } // way too many MarkArry tables to justify this pass message //if (bRet) //{ // v.Pass(T.T_NULL, P.GPOS_P_MarkArrayTable, table.m_tag, sIdentity); //} return bRet; }
public AnchorTable_val GetExitAnchorTable_val() { AnchorTable_val at = null; if (ExitAnchorOffset != 0) { uint offset = m_offsetCursivePos + ExitAnchorOffset; at = new AnchorTable_val(offset, m_bufTable); } return at; }