ひまつぶし雑記帖

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

縦書き電子書籍のための縦中横

2024/2/11 [10:00:20] (日) 天気

image
青空文庫に限らず、縦書きのEPUB電子書籍を作る時に半角の英数字を縦にするための小ネタが今回のエントリ…なにを今さら、というネタで、縦書き文章で半角英数字の縦中横なんて当然。

それでもネタとして取り上げるのはビミョーに考えることがあって、たぶん、どんなことを縦中横にするのか、どうやってるのかがいろいろあるから。特にWEB経由の文章は半角英数字がてんこ盛り。全部対応するのはやってられないけど。
image
・一文字の英数字は全角の英数字にして縦表示にしたい。
・数字の3桁以上は縦中横にすると無理矢理感が強い。この場合はそのまま転がしておきたい。
↑このへんがこだわりどころ。

そのために使ってるのが以下のもの
置換する時にゴソゴソする必要があったのでメモ…「1 while〜」のあたり、たぶん5分後には忘れる

・perl

sub _tcy{
    my $self = shift;
    my $str = shift;

    return $str if $str =~ m![0-9][0-9][0-9]+!;
    $str =~ s!([a-zA-Z0-9\!\?][a-zA-Z0-9\!\?]+)!sprintf(qq{<span class="tcy">%s</span>}, $1)!eg;
    return $str;
}
sub h2z{
    my $self = shift;
    my $str = shift;

    $str =~ tr/a-zA-Z0-9\!\?/a-zA-Z0-9!?/;
    return $str;
}
sub add_tag{
    my $self = shift;
    my $str = shift;
                                                                                                                                                             
    $str =~ s!^([a-zA-Z0-9\!\?])([^a-zA-Z0-9\!\?])!$self->h2z($1) . $2!e;
    $str =~ s!([^a-zA-Z0-9\!\?])([a-zA-Z0-9\!\?])$!$1 . $self->h2z($2)!e;
    1 while $str =~ s!([^a-zA-Z0-9\!\?])([a-zA-Z0-9\!\?])([^a-zA-Z0-9\!\?])!$1 . $self->h2z($2) . $3!eg;
    $str =~ s!([a-zA-Z0-9\!\?][a-zA-Z0-9\!\?]+)!$self->_tcy($1)!eg;

    return $str;
}


・style sheet

.tcy {                                                                                                                                                       
  -webkit-text-combine: horizontal;
  -epub-text-combine:   horizontal;
}

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/7/27 09:11

深夜帰宅して机を前に座ってデスクトップを立ち上げるのはなかなかしんどい。ので、ノパソ。あしたシフトが明けてから改めてMacのautomator調べよう>自分

2024/7/27 09:10

ちょっと続けてみるか

2024/7/27 09:09

あれ?途中覚醒なかったぞ。もしかしてヤクルト1000か、フラシーボか。

検索
<<2024/7>>
 123456
78910111213
14151617181920
21222324252627
28293031

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版