# linefold **Repository Path**: frank-deng/linefold ## Basic Information - **Project Name**: linefold - **Description**: Folding one line text into multiple lines under HTML5 Canvas. - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-08 - **Last Updated**: 2021-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README linefold ======== [English](#english) | [中文](#chinese) Convert given text into folded lines with maximum width and given font / given text length measuring function before rendering, so as to render paragraphs onto platforms without line-folding support, e.g. HTML5 Canvas. This tool only supports languages like English, French, German, Russian, Chinese, Japanese, Korean, etc. Text with complex scripts (e.g. Arabic, Hebrew, Hindi, Thai) not supported. [Click here to open demo page](https://frank-deng.github.io/linefold/) Loading ------- WebPack import linefold from 'linefold'; Node.js const linefold = require('linefold'); Script Tag Usage ----- linefold(text,max_length,font); linefold(text,max_length,(text)=>{ //Your function for measuring text length return text.length; }); Examples -------- Default text length measuring function based on HTML Canvas, with text length in pixel: var text='Convert given text into folded lines with given font and maximum width before rendering, so as to render paragraphs onto platforms without line-folding support, e.g. HTML5 Canvas.'; var lines=linefold(text,320,'16px Times New Roman'); /* Folding result: [ "Convert given text into folded lines with given", "font and maximum width before rendering, so as", "to render paragraphs onto platforms without line-", "folding support, e.g. HTML5 Canvas." ] */ Fold text under terminal environment with maximum width of 36 rows: var text='Convert given text into folded lines with given font and maximum width before rendering, so as to render paragraphs onto platforms without line-folding support, e.g. HTML5 Canvas.'; var lines=linefold(text,36,(text)=>{ let len=0; for(let char of text){ len += (/[\u4E00-\u9FA5\u3000-\u303f\uFF01-\uFF5E]+/.test(char) ? 2 : 1); } return len; }); /* Folding result: [ "Convert given text into folded lines", "with given font and maximum width", "before rendering, so as to render", "paragraphs onto platforms without", "line-folding support, e.g. HTML5", "Canvas." ] */ Fold text with Chinese characters under terminal environment (each Chinese characters and punctions takes space of 2 characters): var text='根据给定的文本、最大宽度、字体等条件,对一段文本进行换行操作。然后渲染到一些不支持自动换行的环境上,比如HTML5 Canvas。'; var lines=linefold(text,36,(text)=>{ let len=0; for(let char of text){ len += (/[\u4E00-\u9FA5\u3000-\u303f\uFF01-\uFF5E]+/.test(char) ? 2 : 1); } return len; }); /* Folding result: [ "根据给定的文本、最大宽度、字体等条", "件,对一段文本进行换行操作。然后渲染", "到一些不支持自动换行的环境上,比如", "HTML5 Canvas。" ] */ linefold ======== [English](#english) | [中文](#chinese) 根据给定的文本、最大宽度、字体/文本长度测量函数,对一段文本进行换行操作。用于将文本渲染到一些不支持自动换行的环境上,比如HTML5 Canvas。 本工具仅支持英语、法语、德语、俄语、中日韩文字等文字。不支持含有复杂文字(如希伯来语、阿拉伯语、印地语、泰语)的文本。 [单击此处打开演示页面](https://frank-deng.github.io/linefold/) 引入 ---- WebPack import linefold from 'linefold'; Node.js const linefold = require('linefold'); Script Tag 使用方法 -------- linefold(text,max_length,font); linefold(text,max_length,(text)=>{ //自定义文本长度测量函数 return text.length; }); 范例 ---- 浏览器中使用默认的基于HTML Canvas的文本长度测量方式,单位为像素: var text='根据给定的文本、最大宽度、字体等条件,对一段文本进行换行操作。然后渲染到一些不支持自动换行的环境上,比如HTML5 Canvas。'; var lines=linefold(text,320,'16px 宋体'); /* 换行结果: [ "根据给定的文本、最大宽度、字体等条件,对", "一段文本进行换行操作。然后渲染到一些不支", "持自动换行的环境上,比如HTML5 Canvas。" ] */ 终端环境下将文本按最宽36列进行换行(中文字符和中文标点符号占2个字符的位置): var text='根据给定的文本、最大宽度、字体等条件,对一段文本进行换行操作。然后渲染到一些不支持自动换行的环境上,比如HTML5 Canvas。'; var lines=linefold(text,36,(text)=>{ let len=0; for(let char of text){ len += (/[\u4E00-\u9FA5\u3000-\u303f\uFF01-\uFF5E]+/.test(char) ? 2 : 1); } return len; }); /* 换行结果: [ "根据给定的文本、最大宽度、字体等条", "件,对一段文本进行换行操作。然后渲染", "到一些不支持自动换行的环境上,比如", "HTML5 Canvas。" ] */