Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Inline Ruby Annotation

Baksi LiBaksi Li106 downloads

Render Inline Annotation ruby, bouten, underline, and two-slot annotations in reading view.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates4

Render Inline Annotation syntax as ruby/furigana, over/under glosses, bouten, overlines, and underlines in Obsidian.

[漢字]^^(かんじ)
[base]^^(over)^_(under)
[重要]^^(..)^_(.~)

The plugin supports Reading view and an early Live Preview replacement widget. Both use the model from markdown-it-inline-annotation/core.

Behavior

Surface Support
Reading view yes
Live Preview prototype; reveals source while editing the expression
Source mode original Markdown source
Commands and settings not yet
Network access or external resources none

The adapter uses conservative spaceAlignment: "auto": phonetic readings such as [取り返す]^^(と り かえ す) align per character, while glosses such as [真值]^^(Truth Value) stay grouped.

Host Boundaries

Obsidian parses Markdown before Reading-view postprocessors run. The adapter:

  • renders complete expressions inside a plain or consistently formatted run;
  • may join adjacent plain text nodes and attribute-free spans;
  • does not join across emphasis, highlight, link, code, or another semantic boundary;
  • skips existing links, code, preformatted blocks, ruby elements, scripts, styles, textareas, and data-inline-annotation-ignore elements.

Annotation slots are plain text. Rich Markdown such as [term]^^(**bold gloss**) is intentionally not reconstructed after Obsidian has split it into semantic DOM nodes. Preserving the source and formatting is safer than silently flattening them to form an annotation.

Live Preview has a separate CodeMirror integration because it operates on source ranges rather than rendered DOM. See docs/live-preview-notes.md for its current tradeoffs.

Styling

The bundled stylesheet exposes a small customization surface:

body {
  --ia-rt-font-size: 0.65em;
  --ia-rt-line-height: 1;
  --ia-underline-offset: 0.15em;
}

Development

npm install
npm run check

npm run check builds the plugin, runs the shared rendering and segment-boundary fixtures, tests Live Preview source ranges, and verifies package safety rules. The core package is bundled into main.js; Obsidian and its CodeMirror packages remain external so the editor keeps one CodeMirror runtime.

To test the runtime files in a vault:

npm run install:vault -- "/path/to/Vault" --clean --enable --examples

Then reload Obsidian or disable and re-enable the plugin. The installer copies only main.js, manifest.json, versions.json, and styles.css; --examples also installs the maintained smoke and showcase notes.

  • examples/obsidian-smoke.md: focused smoke test.
  • examples/obsidian-showcase.md: broader visual pass.

To update the published core intentionally:

npm run update:core
npm run check

Ecosystem

  • Inline Annotation spec and core
  • Inline Annotation for VS Code
  • Logseq reference plugin
  • Original proposal

Safety

Generated DOM is built with DOM APIs. User-authored text is escaped by the shared core, and the plugin loads no scripts or remote resources.

License

MIT

HealthExcellent
ReviewSatisfactory
About
Render Inline Annotation v2 syntax in Obsidian Reading view and Live Preview. Skip existing links, code, preformatted blocks, ruby, scripts, styles, and elements marked data-inline-annotation-ignore, and align phonetic readings per character while keeping multi-word glosses grouped.
AnnotationEditing
Details
Current version
0.3.10
Last updated
2 weeks ago
Created
2 months ago
Updates
4 releases
Downloads
106
Compatible with
Obsidian 1.5.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
Baksi LiBaksi Libaksili
GitHubbaksili
  1. Community
  2. Plugins
  3. Annotation
  4. Inline Ruby Annotation

Related plugins

Advanced Tables

Improved table navigation, formatting, and manipulation.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Outliner

Work with your lists like in Workflowy or Roam Research.

Admonition

Admonition block-styled content.

Creases

Tools for effectively folding Markdown sections.

Dragger

Drag and drop any block (paragraphs, headings, lists, etc.) to rearrange content like Notion.

Various Complements

Complete words similar to auto-completion in an IDE.

LanguageTool Integration

advanced spell/grammar checks with the help of language-tool.

MetaEdit

Manage your metadata.

Simplified Chinese Word Splitting

Adds Simplified Chinese word splitting support for the editor and Vim mode.