Boolean modifier works best with meshes whose Volume can be correctly calculated.
This means that the mesh must have some features:
- No overlapping faces
- No loose faces
- Consistent normals
- ...and many more
As long as you provide a "good" mesh, there should be no issue.
Even if 2D meshes has no volume, so they actually don't fall in this category, the modifiers should be capable of giving a sort of result of their intersection, but you cannot expect a ready-to-use mesh.
In the provided example, the solution could be to apply the modifier and just delete the unwanted faces (they should be already selected):
or to use the Intersect tool in edit mode once joined the shapes in one object as shown below:
or even play with the modifiers options, hoping to get a lucky(+) strike
(+) We may consider that lucky because it was unexpected, as we always figure out the model as if it is a real object (e.g, a paper). The truth is that we have never experienced a 2D object at all, so we tend to apply the known rules that belongs to the 3D objects, while the software isn't.
Obiuvsly the methods shown above require an extra effort in cleaning the mesh after the operation or can't ensure good results always. That's why the Volume's way is preferrable and human-predictable: I would suggest to temporarily close your mesh ( then apply the modifier and remove the unwanted faces)
Or stacking up a Solidify modifier above the Boolean to give some thickness to the to-be-cutted mesh (if this kind of shape is suitable for your project).