Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Bouten / bousen (傍点・傍線)

Bouten (傍点) are emphasis dots placed beside characters in vertical text — the Japanese typographic equivalent of italic or bold. Bousen (傍線) are the same idea with a line instead of dots. The spec recognises eleven dot variants and six line variants; aozora accepts every one.

Notation forms

Two indirection styles, both common in real corpus:

[#「平和」に傍点]           ← target-by-quoting
平和[#「平和」に傍点]        ← redundant explicit copy (also accepted)
[#傍点]平和[#傍点終わり]     ← range form (bare opener / closer)

The target-by-quoting form is by far the most common: the inline annotation looks backwards in the text for the most recent occurrence of the quoted string and applies the bouten to that run.

Variant catalogue

aozora recognises eleven variants — eight 点 (dot) families and three 線 (line) families:

SlugSource keywordFamily
goma傍点
white-sesame白ゴマ傍点
circle丸傍点
white-circle白丸傍点
double-circle二重丸傍点
janome蛇の目傍点
crossばつ傍点
white-triangle白三角傍点
wavy-line波線
under-line傍線
double-under-line二重傍線

Each variant has a stable slug that the HTML renderer emits as a class name (e.g. <em class="aozora-bouten-goma">). The 点/線 family boundary is what mismatched_bouten_container checks for the range form below.

Default rendering

aozora emits <em class="aozora-bouten-<slug>">…</em> so that an external stylesheet can pick the visual treatment per variant. Default CSS hooks live at the consumer side; the parser ships no stylesheet of its own.

<!-- 平和[#「平和」に傍点] -->
平和<em class="aozora-bouten aozora-bouten-goma aozora-bouten-right">平和</em>

(The redundant copy is intentional — the [#…] indirection re-emits the target wrapped in <em>, leaving the original run in place. The HTML rendering matches what print Aozora Bunko output does in practice.)

Range form

To emphasise a run directly (rather than by quoting it), wrap it between a bare opener and its matching closer — note there is no ここから / ここで (those prefixes are for block layout / 太字 / 斜体, not 傍点):

彼は[#傍点]必ず[#傍点終わり]来る
本文[#二重傍線]乙[#二重傍線終わり]
[#左に傍線]丙[#左に傍線終わり]

Renders inline as <em>:

彼は<em class="aozora-bouten aozora-bouten-goma aozora-bouten-right">必ず</em>来る

The opener can be any variant keyword (傍点, 白丸傍点, 二重傍線, …), with an optional 左に prefix for left-side marks; the closer is the same keyword plus 終わり. The closer’s family must match the opener’s: a 点 opener ([#傍点]) pairs with a 点 closer ([#傍点終わり]), a 線 opener ([#傍線]) with a 線 closer ([#傍線終わり]). A family mismatch fires mismatched_bouten_container.

AST shape

Both the indirect ([#「X」に傍点]) and range ([#傍点]…[#傍点終わり]) forms produce Bouten nodes:

pub struct Bouten<'src> {
    pub kind:     BoutenKind,            // one of 11 variants (点 / 線)
    pub target:   NonEmpty<Content<'src>>, // the emphasised run
    pub position: BoutenPosition,        // Right (default) | Left (左に…)
    pub consumed_predecessor: bool,      // whether it absorbed the run before it
}

BoutenKind is a flat enum (BoutenKind::is_line splits 点 from 線); see the rustdoc for the exact variant list.

See also