When using the `propertize` function alone on an entire string, it works. How to return a string, after changing its different sections separately with `add-face-text-property` (probably later repeatedly on different sections)?
```
 (let ((heading "Heading [50%] [1/2]"))
 (concat
 ...
 (when heading
 ;; (propertize heading 'face 'header-line)
 (set-text-properties 0 (length heading) '(face header-line) heading)
 (add-face-text-property
 (string-match "\\(\\(\\[[0-9]*%\\]\\)\\|\\(\\[[0-9]*/[0-9]*\\]\\)\\)" heading 0)
 (match-end 0)
 `(:foreground ,(face-foreground (org-get-todo-face keyword) nil 1))
 nil
 heading)
 )
 )
 )
```