# Unicode Text Formatter An [Obsidian](https://obsidian.md) plugin that transforms selected text into Unicode Mathematical Alphanumeric Symbols — Sans-Serif Bold, Italic, and Bold-Italic — for use in LinkedIn and Facebook posts. ## Features - **Unicode Bold** — converts letters and digits to sans-serif bold (𝗔𝗕𝗖 / 𝗮𝗯𝗰 / 𝟬𝟭𝟮) - **Unicode Italic** — converts letters to sans-serif italic (𝘈𝘉𝘊 / 𝘢𝘣𝘤) - **Unicode Bold Italic** — converts letters to sans-serif bold italic (𝘼𝘽𝘾 / 𝙖𝙗𝙘) - **Remove Unicode Formatting** — converts any formatted Unicode characters back to plain ASCII - **Convert List Bullets to Arrow** — prefixes every selected line with `→ `, stripping any leading `* ` marker first - **Convert List Bullets to Em Dash** — prefixes every selected line with `— `, stripping any leading `* ` marker first - **Convert List to Numbered (Slash)** — numbers every selected line as `1/ item`, `2/ item`, ..., stripping any leading `* ` marker first - **Convert List to Numbered (Parentheses)** — numbers every selected line as `(1) item`, `(2) item`, ..., stripping any leading `* ` marker first - **Convert Markdown to Post Format** — converts a Markdown selection to LinkedIn/Facebook-ready text: `##` headings → bold, `**bold**` → Unicode bold, `_italic_` → Unicode italic, `- ` list items → `— ` em-dash bullets - Non-mapped characters (punctuation, spaces, emoji, etc.) are passed through unchanged ## Usage 1. Select text in the editor 2. Open the Command Palette (`Ctrl/Cmd + P`) 3. Run one of: - **Format as Unicode Bold** - **Format as Unicode Italic** - **Format as Unicode Bold Italic** - **Remove Unicode Formatting** — reverses any of the above back to plain ASCII - **Convert List Bullets to Arrow** — prefixes every line with `→ ` (strips `* ` if present) - **Convert List Bullets to Em Dash** — prefixes every line with `— ` (strips `* ` if present) - **Convert List to Numbered (Slash)** — numbers every line as `1/ item`, `2/ item`, ... (strips `* ` if present) - **Convert List to Numbered (Parentheses)** — numbers every line as `(1) item`, `(2) item`, ... (strips `* ` if present) - **Convert Markdown to Post Format** — converts Markdown to LinkedIn/Facebook-ready text (headings, bold, italic, lists) The selected text is replaced in place. ## Installation ### Manual 1. Build the plugin (see [Development](#development)) or download a release 2. Copy `main.js` and `manifest.json` to your vault at: ``` /.obsidian/plugins/obsidian-unicode-formatter/ ``` 3. In Obsidian: **Settings → Community Plugins → Installed Plugins** — enable **Unicode Text Formatter** ## Development Requirements: Node.js ≥ 16 ```bash npm install npm run dev # watch mode — recompiles on save npm run build # one-time production build npm run lint # ESLint check ``` ### Project structure | File | Purpose | |------|---------| | `src/unicode-maps.ts` | Builds character lookup maps from Unicode code point ranges | | `src/formatter.ts` | `transformText`, `cleanText`, `bulletToEmdash`, `bulletToArrow`, `numberedListSlash`, `numberedListParens`, `markdownToLinkedIn` — text transformation functions | | `src/commands.ts` | Registers the nine editor commands with the Obsidian plugin API | | `src/main.ts` | Plugin entry point — calls `registerCommands` on load | ### Unicode blocks used | Style | Uppercase | Lowercase | Digits | |-------|-----------|-----------|--------| | Sans-Serif Bold | U+1D5D4–U+1D5ED | U+1D5EE–U+1D607 | U+1D7EC–U+1D7F5 | | Sans-Serif Italic | U+1D608–U+1D621 | U+1D622–U+1D63B | — | | Sans-Serif Bold-Italic | U+1D63C–U+1D655 | U+1D656–U+1D66F | — | ## Releasing 1. Update `manifest.json` with the new version and minimum Obsidian version 2. Update `versions.json`: `"new-version": "min-obsidian-version"` 3. Create a GitHub release tagged with the exact version number 4. Attach `manifest.json` and `main.js` as release assets > You can bump the version automatically: > ```bash > npm version patch # or minor / major > ``` ## API Documentation See