{"id":28790922,"url":"https://github.com/giosali/diacriticalmarks","last_synced_at":"2026-05-18T02:31:12.859Z","repository":{"id":144098210,"uuid":"468597372","full_name":"giosali/DiacriticalMarks","owner":"giosali","description":"A small, basic library for creating and getting diacritical letters in WPF.","archived":false,"fork":false,"pushed_at":"2022-03-11T04:48:05.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-25T06:11:55.002Z","etag":null,"topics":["csharp","diacritical-marks","diacritics","wpf"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giosali.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-11T03:41:21.000Z","updated_at":"2022-12-11T16:23:48.000Z","dependencies_parsed_at":"2023-05-02T20:22:27.522Z","dependency_job_id":null,"html_url":"https://github.com/giosali/DiacriticalMarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/giosali/DiacriticalMarks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2FDiacriticalMarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2FDiacriticalMarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2FDiacriticalMarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2FDiacriticalMarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giosali","download_url":"https://codeload.github.com/giosali/DiacriticalMarks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2FDiacriticalMarks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273166935,"owners_count":25057178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","diacritical-marks","diacritics","wpf"],"created_at":"2025-06-17T23:30:51.897Z","updated_at":"2026-05-18T02:31:12.419Z","avatar_url":"https://github.com/giosali.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDiacriticalMarks\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/giosali/DiacriticalMarks/main/ext/DiacriticalMarks-logo.png\" width=\"150\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\tA small, basic library for creating and getting diacritical letters in WPF\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.nuget.org/packages/DiacriticalMarks\"\u003e\n        \u003cimg src=\"https://img.shields.io/nuget/v/DiacriticalMarks?logo=nuget\" alt=\"NuGet Version\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/giosali/DiacriticalMarks/blob/main/DiacriticalMarks/DiacriticalMarks.csproj\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/dynamic/xml?color=%23512bd4\u0026label=target\u0026logo=.net\u0026query=%2F%2FTargetFrameworks[1]\u0026url=https%3A%2F%2Fraw.githubusercontent.com%2Fgiosali%2FDiacriticalMarks%2Fmain%2FDiacriticalMarks%2FDiacriticalMarks.csproj\" alt=\"Target Framework\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/giosali/DiacriticalMarks/actions/workflows/ci.yml\"\u003e\n        \u003cimg src=\"https://github.com/giosali/DiacriticalMarks/actions/workflows/ci.yml/badge.svg\" alt=\"CI Workflow\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/giosali/DiacriticalMarks/blob/main/LICENSE\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/giosali/DiacriticalMarks\" alt=\"License\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Requirements\n\n**DiacriticalMarks** is compatible with **.NET 5.0** (*net5.0-windows*) and **.NET 6.0** (*net6.0-windows*).\n\n## Installation\n\nYou can find the package on [NuGet](https://www.nuget.org/packages/DiacriticalMarks) or install it through PackageManagement:\n\n```ps\nInstall-Package DiacriticalMarks\n```\n\n## Usage\n\nThe purpose of this library is to do basic things like:\n\n```\na + ´ = á\n```\n\nor even:\n\n```\na + ^ + ` = ầ\n```\n\n### Using Basic Accents\n\nYou're most likely interested in using some of the following basic accents:\n\n| Accent     | Mark |\n|------------|:----:|\n| Circumflex |   ^  |\n| Grave      |   `  |\n| Tilde      |   ~  |\n| Diaeresis  |   ¨  |\n| Macron     |   ¯  |\n| Acute      |   ´  |\n| Cedilla    |   ¸  |\n\nIf that's the case, you can simply use the `AttachAccent` method to *attach* an accent to a provided base character:\n\n```csharp\nusing DiacriticalMarks;\n\n\npublic static void Main()\n{\n    string result = DiacriticalMarks.AttachAccent('a', Accent.Acute);\n    char diacriticalLetter = char.Parse(result);\n    Console.WriteLine(diacriticalLetter);  // Prints á\n}\n```\n\nThe `DiacriticalMarks` namespace contains an [Enum](https://docs.microsoft.com/en-us/dotnet/api/system.enum) called `Accent` that contains:\n\n* the circumflex accent (^)\n* the grave accent (`)\n* the tilde (~)\n* the diaeresis (¨)\n* the macron (¯)\n* the acute accent (´)\n* and the cedilla (¸)\n\n### Using Combining Diacritical Marks\n\nIf you need access to more, you can also use the `CombiningDiacriticalMark` enum which is also found in the `DiacriticalMarks` namespace. To use [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks), you have access to two methods:\n\n* `AttachDiacritic`\n* `AttachDiacritics`\n\nThe `CombiningDiacriticalMark` enum contains 112 values, per the [official document on combining diacritical marks by the Unicode Consortium](https://www.unicode.org/charts/PDF/U0300.pdf).\n\n#### AttachDiacritic method\n\nThe `AttachDiacritic` method is similar to the `AttachAccent` method except instead of providing an `Accent`, you need to provide a `CombiningDiacriticalMark`:\n\n```csharp\nusing DiacriticalMarks;\n\n\npublic static void Main()\n{\n    string result = DiacriticalMarks.AttachDiacritic('a', CombiningDiacriticalMark.CombiningGraveAccent);\n    char diacriticalCharacter = char.Parse(result);\n    Console.WriteLine(diacriticalCharacter);  // Prints 'à'\n}\n```\n\n#### AttachDiacritics method\n\nIf you need to attach multiple diacritical marks to a base character, you can use the `AttachDiacritics` method. This method accepts a an array of `CombiningDiacriticalMark`:\n\n```csharp\nusing DiacriticalMarks;\n\n\npublic static void Main()\n{\n    CombiningDiacriticalMark[] marks = new CombiningDiacriticalMark[] { CombiningDiacriticalMark.CombiningBreve, CombiningDiacriticalMark.CombiningDotBelow };\n    string result = DiacriticalMarks.AttachDiacritic('A', marks);\n    char diacriticalCharacter = char.Parse(result);\n    Console.WriteLine(diacriticalCharacter);  // Prints 'Ặ'\n}\n```\n\n```\n📝 NOTE: The order of `CombiningDiacriticalMark`s matters! For example, if the order of the `marks` variable was instead:\n\n    { CombiningDiacriticalMark.CombiningDotBelow, CombiningDiacriticalMark.CombiningBreve }\n\nThen you may end up with a string consisting of a 'Ạ' that has a breve ('˘') accent attached to it, which means the string will have a length of 2 instead of 1.\n\nIn other words:\n\n'A' + new CombiningDiacriticalMark[] { CombiningDiacriticalMark.CombiningBreve, CombiningDiacriticalMark.CombiningDotBelow } = 'Ặ'\n\n    Length = 1\n    Official Unicode name = Latin Capital Letter a with Breve and Dot Below\n\n'A' + new CombiningDiacriticalMark[] { CombiningDiacriticalMark.CombiningDotBelow, CombiningDiacriticalMark.CombiningBreve } = 'Ặ'\n\n    Length = 2\n    Official Unicode name = ?\n```\n\nIf you need to find the correct order for certain characters, follow the order listed in their official Unicode names. A site that I recommend for viewing names is [Unicode-Table](https://unicode-table.com/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiosali%2Fdiacriticalmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiosali%2Fdiacriticalmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiosali%2Fdiacriticalmarks/lists"}