Example #1
0
 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;
 }
Example #2
0
            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;
            }
Example #3
0
                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;
                }