ひまつぶし雑記帖

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/6/12 21:58

Mastodonで十分足りてる

2024/6/12 21:57

ていう層が一定数いると思う。なんでインスタと繋げるんだ?

2024/6/12 21:55

スレッズ単品で使えるならJSON収集のためにアカウント作ってもいいんだけど

検索
<<2024/6>>
      1
2345678
9101112131415
16171819202122
23242526272829
30

リンク

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