+ private List<TextStyle> parseTextStyles(
+ final List<String> textStylesStrings
+ ) throws UserErrorException {
+ List<TextStyle> textStyles;
+ final Pattern textStylePattern = Pattern.compile("(\\d+):(\\d+):(.+)");
+ textStyles = new ArrayList<>();
+ for (final var textStyle : textStylesStrings) {
+ final var matcher = textStylePattern.matcher(textStyle);
+ if (!matcher.matches()) {
+ throw new UserErrorException("Invalid textStyle syntax ("
+ + textStyle
+ + ") expected 'start:length:STYLE'");
+ }
+ final var style = TextStyle.Style.from(matcher.group(3));
+ if (style == null) {
+ throw new UserErrorException("Invalid style: " + matcher.group(3));
+ }
+ textStyles.add(new TextStyle(style,
+ Integer.parseInt(matcher.group(1)),
+ Integer.parseInt(matcher.group(2))));
+ }
+ return textStyles;
+ }
+