Due to unforseen naming conflicts, the project has been rebranded under the ReFuel umbrealla and will now be referred to as Dashboard from now on. Other changes will occur to suit the library more for the engine whilst keeping the freestanding nature of the library. Rename folder. Rename to Dashboard.OpenTK Rename to Dashboard.Media.Defaults. Do the last renames and path fixes.
108 lines
4.7 KiB
C#
108 lines
4.7 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace Dashboard.Typography
|
|
{
|
|
public static class UnicodeUtil
|
|
{
|
|
|
|
public static bool IsWhiteSpace(int chr)
|
|
{
|
|
switch (chr)
|
|
{
|
|
case '\t': case '\n': case '\v': case '\f': case '\r': case ' ':
|
|
case '\u0085': case '\u00A0': case '\u1680': case '\u2000':
|
|
case '\u2001': case '\u2002': case '\u2003': case '\u2004':
|
|
case '\u2005': case '\u2006': case '\u2007': case '\u2008':
|
|
case '\u2009': case '\u200A': case '\u2028': case '\u2029':
|
|
case '\u202F': case '\u205F': case '\u3000': case '\u180E':
|
|
case '\u200B': case '\u200C': case '\u200D': case '\u2060':
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static bool IsUnicodeWhitespace(int chr)
|
|
{
|
|
switch (chr)
|
|
{
|
|
case '\t': case '\n': case '\v': case '\f': case '\r': case ' ':
|
|
case '\u0085': case '\u00A0': case '\u1680': case '\u2000':
|
|
case '\u2001': case '\u2002': case '\u2003': case '\u2004':
|
|
case '\u2005': case '\u2006': case '\u2007': case '\u2008':
|
|
case '\u2009': case '\u200A': case '\u2028': case '\u2029':
|
|
case '\u202F': case '\u205F': case '\u3000':
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static bool IsNewLine(int chr)
|
|
{
|
|
switch (chr)
|
|
{
|
|
case '\n': case '\v': case '\f': case '\r':
|
|
case '\u0085': case '\u2028': case '\u2029':
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static WhitespaceInfo GetWhitespaceInfo(int chr)
|
|
{
|
|
switch (chr)
|
|
{
|
|
// CHAR ------------BOILERPLATE----------- BREAK NEWLINE
|
|
case '\t': return new WhitespaceInfo('\t', true, false);
|
|
case '\n': return new WhitespaceInfo('\n', false, true);
|
|
case '\v': return new WhitespaceInfo('\v', false, true);
|
|
case '\f': return new WhitespaceInfo('\f', false, true);
|
|
case '\r': return new WhitespaceInfo('\r', false, true);
|
|
case ' ': return new WhitespaceInfo(' ', true, false);
|
|
case '\u0085': return new WhitespaceInfo('\u0085', false, true);
|
|
case '\u00A0': return new WhitespaceInfo('\u00A0', false, false);
|
|
case '\u1680': return new WhitespaceInfo('\u1689', true, false);
|
|
case '\u2000': return new WhitespaceInfo('\u2000', true, false);
|
|
case '\u2001': return new WhitespaceInfo('\u2001', true, false);
|
|
case '\u2002': return new WhitespaceInfo('\u2002', true, false);
|
|
case '\u2003': return new WhitespaceInfo('\u2003', true, false);
|
|
case '\u2004': return new WhitespaceInfo('\u2004', true, false);
|
|
case '\u2005': return new WhitespaceInfo('\u2005', true, false);
|
|
case '\u2006': return new WhitespaceInfo('\u2006', true, false);
|
|
case '\u2007': return new WhitespaceInfo('\u2007', false, false);
|
|
case '\u2008': return new WhitespaceInfo('\u2008', true, false);
|
|
case '\u2009': return new WhitespaceInfo('\u2009', true, false);
|
|
case '\u200A': return new WhitespaceInfo('\u200A', true, false);
|
|
case '\u2028': return new WhitespaceInfo('\u2028', false, true);
|
|
case '\u2029': return new WhitespaceInfo('\u2029', false, true);
|
|
case '\u202F': return new WhitespaceInfo('\u202F', false, false);
|
|
case '\u205F': return new WhitespaceInfo('\u205F', true, false);
|
|
case '\u3000': return new WhitespaceInfo('\u3000', true, false);
|
|
case '\u180E': return new WhitespaceInfo('\u180E', true, false);
|
|
case '\u200B': return new WhitespaceInfo('\u200B', true, false);
|
|
case '\u200C': return new WhitespaceInfo('\u200C', true, false);
|
|
case '\u200D': return new WhitespaceInfo('\u200D', true, false);
|
|
case '\u2060': return new WhitespaceInfo('\u2060', false, false);
|
|
default:
|
|
throw new ArgumentException("Character is not a whitespace character.", nameof(chr));
|
|
}
|
|
}
|
|
}
|
|
|
|
public struct WhitespaceInfo
|
|
{
|
|
public int Character { get; }
|
|
public bool IsBreaking { get; }
|
|
public bool IsNewline { get; }
|
|
|
|
public WhitespaceInfo(int chr, bool breaking, bool nl)
|
|
{
|
|
Character = chr;
|
|
IsBreaking = breaking;
|
|
IsNewline = nl;
|
|
}
|
|
}
|
|
} |