diff --git a/Example.cs b/Example.cs new file mode 100644 index 0000000..368ba28 --- /dev/null +++ b/Example.cs @@ -0,0 +1,26 @@ +using System; +using System.Text; +using System.Unicode; + +namespace Example +{ + internal static class Program + { + private static void Main() + { + Console.OutputEncoding = Encoding.Unicode; + PrintCodePointInfo('A'); + PrintCodePointInfo('∞'); + PrintCodePointInfo(0x1F600); + } + + private static void PrintCodePointInfo(int codePoint) + { + var charInfo = UnicodeInfo.GetCharInfo(codePoint); + Console.WriteLine(UnicodeInfo.GetDisplayText(charInfo)); + Console.WriteLine("U+" + codePoint.ToString("X4")); + Console.WriteLine(charInfo.Name ?? charInfo.OldName); + Console.WriteLine(charInfo.Category); + } + } +} diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..1c91df3 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Fabien Barbier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4caa36 --- /dev/null +++ b/README.md @@ -0,0 +1,137 @@ +.NET Unicode Information Library +======================== + +Summary +------- +This projects provides access to some of the data contained in the Unicode Character Database by the means of a portable .NET assembly. +Included, is a small WPF application allowing to inspect the Unicode code points composing a specified text. + +Compiling and using the project +------------------------------- +### Using the UnicodeInformation library +Using the library is as easy as including it in your project. You will find all the good stuff in the System.Unicode namespace. + +Let's see a simple example: + +```csharp +using System; +using System.Text; +using System.Unicode; + +namespace Example +{ + internal static class Program + { + private static void Main() + { + Console.OutputEncoding = Encoding.Unicode; + PrintCodePointInfo('A'); + PrintCodePointInfo('∞'); + PrintCodePointInfo(0x1F600); + } + + private static void PrintCodePointInfo(int codePoint) + { + var charInfo = UnicodeInfo.GetCharInfo(codePoint); + Console.WriteLine(UnicodeInfo.GetDisplayText(charInfo)); + Console.WriteLine("U+" + codePoint.ToString("X4")); + Console.WriteLine(charInfo.Name ?? charInfo.OldName); + Console.WriteLine(charInfo.Category); + } + } +} +``` +This example shows a few usages of the library. It gets information on a specific code point, queries the library for the text to display for the specific character (usually the character itself), and displays the character's name and category. + +### Details +In its current state, the project is written in C# 6, compilable by [Roslyn](http://roslyn.codeplex.com/), and targets the .NET 4.5 framework. +The core of the project, UnicodeInformation.dll, is a portable class library usable for either regular .NET or Windows 8 applications. +This library includes a subset of the official [Unicode Character Database](http://www.unicode.org/Public/UCD/latest/) (Version 7.0 at the time of writing) stored in a custom file format. + +### Included Properties +#### From UCD +* Name +* General_Category +* Canonical_Combining_Class +* Bidi_Class +* Decomposition_Type +* Decomposition_Mapping +* Numeric_Type (*) +* Numeric_Value +* Bidi_Mirrored +* Unicode_1_Name +* Simple_Uppercase_Maping +* Simple_Lowercase_Mapping +* Simple_Titlecase_Mapping +* Block +* ASCII_Hex_Digit +* Bidi_Control +* Dash +* Deprecated +* Diacritic +* Extender +* Hex_Digit +* Hyphen +* Ideographic +* IDS_Binary_Operator +* IDS_Trinary_Operator +* Join_Control +* Logical_Order_Exception +* Noncharacter_Code_Point +* Other_Alphabetic +* Other_Default_Ignorable_Code_Point +* Other_Grapheme_Extend +* Other_ID_Continue +* Other_ID_Start +* Other_Lowercase +* Other_Math +* Other_Uppercase +* Pattern_Syntax +* Pattern_White_Space +* Quotation_Mark +* Radical +* Soft_Dotted +* STerm +* Terminal_Punctuation +* Unified_Ideograph +* Variation_Selector +* White_Space +* Lowercase +* Uppercase +* Cased +* Case_Ignorable +* Changes_When_Lowercased +* Changes_When_Uppercased +* Changes_When_Titlecased +* Changes_When_Casefolded +* Changes_When_Casemapped +* Alphabetic +* Default_Ignorable_Code_Point +* Grapheme_Base +* Grapheme_Extend +* Grapheme_Link +* Math +* ID_Start +* ID_Continue +* XID_Start +* XID_Continue + +NB: The UCD property ISO_Comment will never be included since this one is empty in all new Unicode versions. + +#### From Unihan +* kAccountingNumeric +* kOtherNumeric +* kPrimaryNumeric +* kDefinition +* kMandarin +* kCantonese +* kJapaneseKun +* kJapaneseOn +* kKorean +* kHangul +* kVietnamese +* kSimplifiedVariant +* kTraditionalVariant + +### Regenerating the data +The project UnicodeInformation.Builder takes cares of generating a file named ucd.dat. This file contains Unicode data compressed by .NET's deflate algorithm, and should be included in UnicodeInformation.dll at compilation. \ No newline at end of file diff --git a/UnicodeInformation.sln b/UnicodeInformation.sln index f116374..f2ecbf3 100644 --- a/UnicodeInformation.sln +++ b/UnicodeInformation.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.22129.1 +VisualStudioVersion = 14.0.22310.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnicodeCharacterInspector", "UnicodeCharacterInspector\UnicodeCharacterInspector.csproj", "{04E97F21-EF04-441F-83CF-2E71F3AAB089}" EndProject @@ -13,6 +13,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnicodeInformation.Builder" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{73097DF3-04B7-4C5F-B4EA-0EB800E40702}" ProjectSection(SolutionItems) = preProject + Example.cs = Example.cs + LICENSE.txt = LICENSE.txt + README.md = README.md System.Unicode.snk = System.Unicode.snk EndProjectSection EndProject