html5 连字符,HTML5画布|文本换行时超过maxwidth的单词不带连字符的单词分隔符

博客讨论了在使用等宽字体时如何在画布上正确换行和截断文本,尤其是针对长字符串的处理。内容涉及到限制显示的文本行数为5行,并在单词超过最大宽度时进行分割,同时避免拆分小于最大宽度的单词。作者分享了遇到的问题和解决方案,并提供了代码示例。
摘要由CSDN通过智能技术生成

我将使用等宽字体在画布上进行文本换行,我需要分割超过maxwidth的单词(不需要连字符)。我还需要将画布上显示的文本行数限制为5行(从第一行开始)。

在那个小提琴中,当您应用以下文字时......

todo(ctx, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA corrupti nemo dolorem assumenda illum tempore nam iure necessitatibus unde! Fugiat, BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBquibusdam. Quia, vitae, magni, accusamus, modi doloremque dolores repudiandae expedita consectetur labore veniam minima minus in ab non aperiam ducimus iure repellendus qui cumque perferendis ad molestias porro quae dolorum amet laboriosam saepe omnis esse eum voluptatum. Facere, animi culpa accusantium eligendi voluptatum voluptatem voluptates vitae.", 12, "black");

... B字符串根据maxwidth分割,但在超过maxwidth时会创建一个新行,就像这样(在“Fugiat”之后出现一个新行):

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA corrupti nemo dolorem assumenda

illum tempore nam iure necessitatibus unde! Fugiat,

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBquibusdam. Quia, vitae, magni,

accusamus, modi doloremque dolores repudiandae expedita consectetur labore

veniam minima minus in ab non aperiam ducimus iure repellendus qui cumque

perferendis ad molestias porro quae dolorum amet laboriosam saepe omnis esse

eum voluptatum. Facere, animi culpa accusantium eligendi voluptatum

voluptatem voluptates vitae.

我希望B字符串看起来像这样:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA corrupti nemo dolorem assumenda

illum tempore nam iure necessitatibus unde! Fugiat, BBBBBBBBBBBBBBBBBBBBBBBB

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

BBBBBBBBBBBBBBBBBBBBBquibusdam. Quia, vitae, magni, accusamus, modi

doloremque dolores repudiandae expedita consectetur labore veniam minima

minus in ab non aperiam ducimus iure repellendus qui cumque perferendis ad

molestias porro quae dolorum amet laboriosam saepe omnis esse eum voluptatum.

Facere, animi culpa accusantium eligendi voluptatum voluptatem voluptates

vitae.

提醒:在画布上只显示前五行文字。我将使用等宽字体,所有字母和空格宽度相同,是否更容易处理?输入的Thx。

更新:我设法让长字符串显示在应有的位置,但该技术还会拆分不超过maxwidth的字词,请参阅http://jsfiddle.net/eECar/47/

在小提琴中,我将字体改为等宽字体,基本上改变了这段代码......

for( j=0; result.indexOf(" ",j) !== -1; j=result.indexOf(" ",j)+1 );

..对此:

for( j=0; result.indexOf(" ",j) !== -1; j=result.indexOf(" ",j)+35 );

... +35是我收集的每行的字符长度。

我以为我已经解决了(拉丁语让我大笑起来)但是经过仔细审查后,我意识到每行小于最大字符数的单词也会在行尾分割。有没有分裂的任何方法来保存这些单词?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值