質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Q&A

2回答

301閲覧

svgのフォントで、右側の上の文字を右端に寄せつつ、右側の下の文字の左端を上の文字の左端に寄せたいです。

sembokulove

総合スコア90

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

0グッド

1クリップ

投稿2024/08/15 01:12

実現したいこと

右側の上の文字を右端に寄せつつ、
右側の下の文字の左端を上の文字の左端に寄せたいです。

発生している問題・分からないこと

イメージ説明
上のように、右寄せにすると、下の文字まで右寄せになってしまうのが難点です。

<style> </style> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" width="1000" height="1000"> <text x="0" y="60">←</text> <text x="20" y="50" font-family="sans-serif">あいうえお</text> <text x="20" y="70" font-family="serif">あいうえお</text> <text x="1000" y="60"text-anchor="end" text-anchor="end" style="float: right; display: block;">←</text> <text x="980" y="50" font-family="sans-serif" text-anchor="end">りんご</text> <text x="980" y="70" font-family="serif" text-anchor="end">apple</text> </svg>

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

チャットgptなどで調べましたが、text-anchor="start"にして、文字の量に合わせて自分でx座標の位置を調整するとか出ました。
これが、svgの限界なんですか。もしそうだとしたら、svgのフォントは全く役に立たない代物です。
こんなシステムの発案者がおかしいです。ヽ(`Д´)ノプンプン。
また、自分は上はsvgで、下が普通のhtmlとcssが嫌です。
そんなことさせられるくらいなら毒を吐きます。
贅沢は言っていないつもりです。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

要素の幅を取得して動的に変更するくらいしかないかと思います。

html

1<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" width="1000" height="1000"> 2 <text x="0" y="60"></text> 3 <text x="20" y="50" font-family="sans-serif">あいうえお</text> 4 <text x="20" y="70" font-family="serif">あいうえお</text> 5 6 <text x="1000" y="60" text-anchor="end"></text> 7 <text id="line1" x="980" y="50" font-family="sans-serif" text-anchor="end">りんご</text> 8 <text id="line2" y="70" font-family="serif">apple</text> 9</svg> 10 11<script> 12const l1 = document.getElementById('line1') 13const l2 = document.getElementById('line2') 14l2.setAttribute('x', 981 - l1.getBBox().width) 15</script>

上記の例では #line1 要素を基準としていますので、 #line2 要素のほうが幅が大きい場合は途中で切れることになります

投稿2024/08/16 22:11

Eggpan

総合スコア3203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SVGだと「自動的に2つの <text> の左端を揃える」のような機能はなかったと思います。JavaScript コードで位置を操作すれば可能ですが。

細かい仕様が不明ですが、HTML のルビでペアにするとよいのかもしれません。

html

1<div style="display:flex"> 2<ruby style="ruby-position:under">あいうえお<rt>あいうえお</rt></ruby> 3<div style="flex: 1"></div> 4<ruby style="ruby-position:under; ruby-align:start">りんご<rt>apple</rt></ruby> 5</div> 6<!-- 注: ruby-align プロパティは Google Chrome 128 からサポート、Safari では未サポート -->

投稿2024/08/15 01:24

編集2024/08/15 01:29
int32_t

総合スコア21601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sembokulove

2024/08/15 01:39 編集

回答ありがとうございます。試してみましたが解決できませんでした。 下のフォントが上のフォントの中央に配置されます。 これは期待外れの結果です。 やはり、svgではなくhtmlとcssでのみしか対応できないのですね。 svgの開発者は頭がぶっ飛んでいます。ヽ(`Д´)ノプンプン では、以前駅名表の上半分はsvgだとやりやすいといった人もちょっと頭がぶっ飛んでいますね。
int32_t

2024/08/15 01:39

下のテキストは ruby-align プロパティで調整するか、<ruby>をやめて inline-block にテキストを2段入れて、下段は text-align プロパティで調整ですかね。
sembokulove

2024/08/16 09:56

回答ありがとうございます。試してみましたが解決できませんでした。 ありがとうございまず。svgはあきらめます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問