text.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.assembleFont = exports.getTextWidth = exports.getLineSpaceing = exports.getTextHeight = void 0;
  4. var util_1 = require("./util");
  5. var offscreen_1 = require("./offscreen");
  6. /**
  7. * 获取文本的高度
  8. * @param text 文本
  9. * @param fontSize 字体大小
  10. * @param lineHeight 行高,可以为空
  11. */
  12. function getTextHeight(text, fontSize, lineHeight) {
  13. var lineCount = 1;
  14. if (util_1.isString(text)) {
  15. lineCount = text.split('\n').length;
  16. }
  17. if (lineCount > 1) {
  18. var spaceingY = getLineSpaceing(fontSize, lineHeight);
  19. return fontSize * lineCount + spaceingY * (lineCount - 1);
  20. }
  21. return fontSize;
  22. }
  23. exports.getTextHeight = getTextHeight;
  24. /**
  25. * 获取行间距如果文本多行,需要获取文本间距
  26. * @param fontSize 字体大小
  27. * @param lineHeight 行高
  28. */
  29. function getLineSpaceing(fontSize, lineHeight) {
  30. return lineHeight ? lineHeight - fontSize : fontSize * 0.14;
  31. }
  32. exports.getLineSpaceing = getLineSpaceing;
  33. /**
  34. * 字体宽度
  35. * @param text 文本
  36. * @param font 字体
  37. */
  38. function getTextWidth(text, font) {
  39. var context = offscreen_1.getOffScreenContext(); // 获取离屏的 ctx 进行计算
  40. var width = 0;
  41. // null 或者 undefined 时,宽度为 0
  42. if (util_1.isNil(text) || text === '') {
  43. return width;
  44. }
  45. context.save();
  46. context.font = font;
  47. if (util_1.isString(text) && text.includes('\n')) {
  48. var textArr = text.split('\n');
  49. util_1.each(textArr, function (subText) {
  50. var measureWidth = context.measureText(subText).width;
  51. if (width < measureWidth) {
  52. width = measureWidth;
  53. }
  54. });
  55. }
  56. else {
  57. width = context.measureText(text).width;
  58. }
  59. context.restore();
  60. return width;
  61. }
  62. exports.getTextWidth = getTextWidth;
  63. function assembleFont(attrs) {
  64. var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant;
  65. return [fontStyle, fontVariant, fontWeight, fontSize + "px", fontFamily].join(' ').trim();
  66. }
  67. exports.assembleFont = assembleFont;
  68. //# sourceMappingURL=text.js.map