public void AddRangeUni(Dictionary<int, int[]> longTag, bool includeMetrics, bool subsetp)
{
if (!subsetp && (subsetRanges != null || directoryOffset > 0)) {
int[] rg = (subsetRanges == null && directoryOffset > 0) ? new int[]{0, 0xffff} : CompactRanges(subsetRanges);
Dictionary<int, int[]> usemap;
if (!fontSpecific && cmap31 != null)
usemap = cmap31;
else if (fontSpecific && cmap10 != null)
usemap = cmap10;
else if (cmap31 != null)
usemap = cmap31;
else
usemap = cmap10;
foreach (KeyValuePair<int,int[]> e in usemap) {
int[] v = e.Value;
int gi = v[0];
if (longTag.ContainsKey(gi))
continue;
int c = e.Key;
bool skip = true;
for (int k = 0; k < rg.Length; k += 2) {
if (c >= rg[k] && c <= rg[k + 1]) {
skip = false;
break;
}
}
if (!skip)
longTag[gi] = includeMetrics ? new int[]{v[0], v[1], c} : null;
}
}
}